@@ -60,10 +60,32 @@ func EnablePgAdminLogging(ctx context.Context, instrumentationSpec *v1beta1.Inst
6060 {
6161 "context" : "log" ,
6262 "statements" : []string {
63+ // Set instrumentation scope
64+ `set(instrumentation_scope.name, "pgadmin")` ,
65+
66+ // Keep the unparsed log record in a standard attribute, and replace
67+ // the log record body with the message field.
68+ //
69+ // https://github.com/open-telemetry/semantic-conventions/blob/v1.29.0/docs/general/logs.md
70+ `set(attributes["log.record.original"], body)` ,
6371 `set(cache, ParseJSON(body))` ,
6472 `merge_maps(attributes, ExtractPatterns(cache["message"], "(?P<webrequest>[A-Z]{3}.*?[\\d]{3})"), "insert")` ,
73+ `set(body, cache["message"])` ,
74+
75+ // Set process.title to the "name" from each log record.
76+ // TODO: confirm that the "name" entry in the pgAdmin logs is in fact referring
77+ // to a process... Should this be "instrumentation_scope.name"??
78+ `set(attributes["process.title"], cache["name"])` ,
79+
80+ // https://opentelemetry.io/docs/specs/otel/logs/data-model/#field-severitytext
6581 `set(severity_text, cache["level"])` ,
6682 `set(time_unix_nano, Int(cache["time"]*1000000000))` ,
83+
84+ // Map pgAdmin "logging levels" to OpenTelemetry severity levels.
85+ //
86+ // https://opentelemetry.io/docs/specs/otel/logs/data-model/#field-severitynumber
87+ // https://opentelemetry.io/docs/specs/otel/logs/data-model-appendix/#appendix-b-severitynumber-example-mappings
88+ // https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/-/pkg/ottl/contexts/ottllog#enums
6789 `set(severity_number, SEVERITY_NUMBER_DEBUG) where severity_text == "DEBUG"` ,
6890 `set(severity_number, SEVERITY_NUMBER_INFO) where severity_text == "INFO"` ,
6991 `set(severity_number, SEVERITY_NUMBER_WARN) where severity_text == "WARNING"` ,
0 commit comments