Skip to content

Transports

A transport is what actually emits a log entry: to stdout, to a file, to a third-party logger like zerolog or zap, to a remote service. The core LogLayer assembles the entry; the transport renders it.

Available transports

Renderers

Self-contained transports that format the entry and write it to an io.Writer. Pick one of these when you want LogLayer to do the rendering itself.

NameVersionGo ReferenceDescription
BlankVersionGo ReferenceDelegates dispatch to a user-supplied function. For prototyping or one-off integrations.
CLIVersionGo ReferenceTuned for CLI apps: short level prefixes, stdout/stderr routing, TTY-detected color, no timestamps.
ConsoleVersionGo ReferencePlain fmt.Println-style output to stdout/stderr; minimal formatting.
PrettyVersionGo ReferenceColorized, theme-aware terminal output. Recommended for local dev.
StructuredVersionGo ReferenceOne JSON object per log entry. Recommended for production.
TestingVersionGo ReferenceCaptures entries in memory for tests.

Cloud

Managed log services. Async + batched by default; site-aware where applicable.

NameVersionGo ReferenceDescription
AxiomVersionGo ReferenceShips logs to Axiom via caller-supplied *axiom.Client. NDJSON ingestion with configurable message field.
Better StackVersionGo ReferenceShips logs to Better Stack via HTTP intake. Source token auth, configurable timestamp field.
DatadogVersionGo ReferenceDatadog Logs HTTP intake. Site-aware URL, DD-API-KEY header, status mapping.
Google Cloud LoggingVersionGo ReferenceForwards entries to a caller-supplied *logging.Logger from cloud.google.com/go/logging. Severity mapping, root-level Entry skeleton, async + sync dispatch.
New RelicVersionGo ReferenceNew Relic Log Ingest API. Site-aware URL, api-key header, LogEvent encoding.
SentryVersionGo ReferenceForwards entries to a sentry.Logger. Routes fatal/panic through LFatal so loglayer's core controls termination.

Other Transports

Generic shippers and on-disk sinks.

NameVersionGo ReferenceDescription
File (Lumberjack)VersionGo ReferenceOne JSON object per line written to a rotating file. Backed by lumberjack.v2.
HTTPVersionGo ReferenceGeneric batched HTTP POST to any endpoint. Pluggable Encoder.
OpenTelemetry LogsVersionGo ReferenceEmits to an OTel log.Logger. Forwards WithContext so SDK processors can correlate with the active span.

Supported Loggers

Transports that hand the entry off to an existing third-party logger you already configure. Pick one of these when you have an established logging stack and want LogLayer's API on top.

NameVersionGo ReferenceDescription
charmbracelet/logVersionGo ReferencePretty terminal-friendly logger from Charm
log/slogVersionGo ReferenceWraps a stdlib *slog.Logger. Forwards WithContext to handlers.
logrusVersionGo ReferenceThe classic structured logger
phuslu/logVersionGo ReferenceHigh-performance zero-alloc JSON logger. Always exits on fatal.
ZapVersionGo ReferenceWraps a *zap.Logger
ZerologVersionGo ReferenceWraps a *zerolog.Logger

A single LogLayer can fan out to several transports at once, see Multiple Transports. To wrap a logger LogLayer doesn't ship a transport for, see Creating Transports.