OpenTelemetry
Point your existing OpenTelemetry setup at LogNorth with two env vars
Already using OpenTelemetry? Two env vars and you’re done:
OTEL_EXPORTER_OTLP_ENDPOINT=https://logs.yoursite.com/otelOTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer lgn-your-api-keyLogNorth speaks OTLP over HTTP with protobuf (http/protobuf), the default protocol of the OTel specification. It does not accept OTLP/JSON or gRPC: an exporter that sends JSON by default, such as @opentelemetry/exporter-logs-otlp-http in Node, needs the protobuf exporter instead, or OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf where the SDK reads it. Gzip bodies work.
We accept everything your app sends. We keep the logs. Traces and metrics are accepted and discarded. LogNorth does logs and errors, that’s it.
What We Keep
Section titled “What We Keep”From each log record, we extract what matters:
| OTel field | LogNorth field | Notes |
|---|---|---|
body |
message |
Records without a text body are skipped |
timeUnixNano |
timestamp |
Falls back to observedTimeUnixNano |
attributes |
context |
Flattened key-value map |
resource.attributes |
context |
Merged (log attributes win on conflict) |
severityNumber |
is_error |
ERROR and FATAL severity → error |
traceId |
trace_id |
Hex-encoded, all-zeros stripped |
exception.message |
context.error |
OTel semantic convention |
exception.type |
context.error_class |
Groups errors into issues |
Error Detection
Section titled “Error Detection”A log record becomes an error if any of these are true:
- Severity is ERROR or FATAL
exception.messageorerror.messageattribute existsexception.typeorerror.typeattribute exists
Same rules as the native ingestion API.
What We Discard
Section titled “What We Discard”- Traces (
/v1/traces): accepted, discarded - Metrics (
/v1/metrics): accepted, discarded - Span IDs, flags, dropped attribute counts: not used
- Resource attributes like
service.name: stored in context, not used for routing