blob: 3f5a8366a20e7994a146253525b6c7d74dabc4f5 [file] [log] [blame]
package eu.mulk.quarkus.observability.googlecloud.jsonlogging;
import io.smallrye.common.constraint.Nullable;
import java.time.Instant;
import java.util.Map;
import javax.json.bind.annotation.JsonbProperty;
/**
* A JSON log entry compatible with Google Cloud Logging.
*
* <p>Roughly (but not quite) corresponds to Google Cloud Logging's
* <a href="https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry">LogEntry</a>
* structure.
*/
public record GoogleCloudLogEntry(
String getMessage,
String getSeverity,
Timestamp getTimestamp,
@Nullable String getTrace,
@Nullable String getSpanId,
@Nullable SourceLocation getSourceLocation,
@Nullable Map<String, String> getLabels,
@Nullable Map<String, Object> getParameters,
@Nullable Map<String, String> getMappedDiagnosticContext,
@Nullable String getNestedDiagnosticContext,
@Nullable @JsonbProperty("@type") String getType) {
static public record SourceLocation(
@Nullable String getFile,
@Nullable String getLine,
@Nullable String getFunction) {}
static public record Timestamp(
long getSeconds,
int getNanos) {
public Timestamp(Instant t) {
this(t.getEpochSecond(), t.getNano());
}
}
}