Sinks
Destinations for log output.
Built-in sinks
Stdout pretty: human-readable console output (TTY).
Stdout JSON: structured JSON lines to stdout.
Rotating file: size/time-based rotation with optional compression.
HTTP client: POST log entries to an HTTP endpoint.
MMAP persistence: experimental local persistence sink.
Selection logic
If
FAPILOG_HTTP__ENDPOINTis set, the HTTP sink is used.Else if
FAPILOG_FILE__DIRECTORYis set, the rotating file sink is used.Otherwise, stdout auto is used (pretty in TTY, JSON when piped).
Fast-path serialization
When core.serialize_in_flush=True and the sink supports write_serialized, envelopes are serialized once per batch entry in the flush path to reduce work in sinks.
Configuring sinks
Rotating file (env):
export FAPILOG_FILE__DIRECTORY=/var/log/myapp
export FAPILOG_FILE__MAX_BYTES=10485760
export FAPILOG_FILE__MAX_FILES=5
export FAPILOG_FILE__COMPRESS_ROTATED=true
HTTP sink (env):
export FAPILOG_HTTP__ENDPOINT=https://logs.example.com/ingest
export FAPILOG_HTTP__TIMEOUT_SECONDS=5
export FAPILOG_HTTP__RETRY_MAX_ATTEMPTS=3
Routing by level
Enable sink_routing to send different levels to different sinks:
export FAPILOG_SINK_ROUTING__ENABLED=true
export FAPILOG_SINK_ROUTING__RULES='[
{"levels": ["ERROR", "CRITICAL"], "sinks": ["postgres"]},
{"levels": ["DEBUG", "INFO"], "sinks": ["stdout_json"]}
]'
export FAPILOG_SINK_ROUTING__FALLBACK_SINKS='["rotating_file"]'
When disabled (default), all events fan out to all configured sinks.