Skip to main content
Logs are a separate protocol from events. Events track what users do (product analytics). Logs track what your application does (errors, warnings, system behavior). They use the same SDKs and the same pipeline, but they have a different schema and different semantics.

Sending a log

Every log entry has:

Severity levels

Tell uses RFC 5424 severity levels plus trace: SDKs provide convenience methods for each level:

How logs differ from events

Logs and events are different protocols with different schemas. Understanding the differences helps you use each one correctly. Events are user-centric — every event is tied to a device and a user. Logs are infrastructure-centric — they’re tied to a service and a source, not a user.

Session correlation

Logs share a session ID with events. On mobile SDKs, this happens automatically — the same session that groups a user’s events also tags their logs. This lets you correlate what a user was doing (events) with what the app was doing (logs) during the same session. On server-side SDKs, you control the session ID. You can set it to match a request ID, a job ID, or any identifier that makes sense for your correlation needs.

Structured data

The data field accepts arbitrary key-value pairs — strings, numbers, booleans, nested objects. Use it for context that helps you debug:

Pipeline processing

Logs flow through the same pipeline as events — routing, transforms, and sinks all apply. You can:
  • Route logs to a different sink than events (e.g., logs to disk, events to ClickHouse)
  • Redact PII from log messages using the redact transform
  • Extract patterns from logs using the pattern transform for anomaly detection
  • Filter out noisy log levels using the filter transform
See Pipeline Overview for configuration details.

What’s next