Docs
Log field precedence
Which keys Obsevo reads for message, severity, timestamp and correlation — in order, first match wins.
OpenTelemetry semantic conventions are canonical; everything else is a documented
alias. Keys are checked in the order below, first match wins, either as a flat
key ("service.name") or as a nested path ({"service":{"name":…}}).
Anything not listed becomes a searchable attribute. Nothing is dropped.
- Message
messagemsgtexttextPayloadbodylogeventdescription
- Severity
severityTextseverity_textseverityNumberseverity_numberseveritylevellevelnameloglevellogLevellog_levellog.levelstatus
- Timestamp
timestamptimeUnixNanotime_unix_nanoobservedTimeUnixNanotimets@timestampdateeventTimeoccurredAt
- Source
service.nameservicesourceserviceNameservice_nameloggerlogger_nameloggerName
- Execution
n8n.execution.idexecution.idexecutionIdexecution_id
- Workflow id
n8n.workflow.idworkflow.idn8nWorkflowIdworkflowIdworkflow_id
- Workflow name
n8n.workflow.nameworkflow.nameworkflowNameworkflow_nameworkflow
- Dedupe token
idempotencyKeyidempotency_keyevent.id_id
Three things worth knowing
Matching is case-sensitive. "Source" is not "source"; it stays an
attribute. No schema in this space case-folds, and folding would read a business
payload's {"Status":"shipped"} as a severity with no way to opt out. A finite
published list is debuggable; a fuzzy match is not.
A lifted key is not repeated as an attribute — it became a column. Its
siblings survive: service.version is kept when service.name is taken. The two
sender-owned identifiers, _id and event.id, are an exception and stay in the
payload after being used for deduplication, because someone will want to filter on
them.
A bare id is not a dedupe token. Two lines about the same order would
collide on it and the second would silently vanish. Send idempotencyKey if you
want to control deduplication yourself.
Normalisation
Severity spellings are normalised generously — WARN:, [error], warning,
critical, pino's 30, syslog's 3, OTel's severityNumber: 17 all land
correctly. Storage uses six levels: fatal, error, warn, info, debug,
trace.
Timestamps accept RFC 3339, or epoch seconds, milliseconds, microseconds or nanoseconds — told apart by magnitude.
env is never read from the payload. It comes from the instance the event key
belongs to.
Attribute limits
| Limit | Value |
|---|---|
| Records per batch | 200 |
| Attribute keys per record | 50 |
| Attribute key length | 128 |
| Attribute value length | 1024 |
Serialized data size | 8192 bytes |
Two truncation markers can appear on a record: _truncated when the server's
flattener hit a cap, and _clipped when the n8n node trimmed the payload before
sending. They are rendered as notes rather than as payload keys.