Skip to main content

Logging

Immich logs to standard output, so logs are read with docker logs — see Inspect containers and logs. Three environment variables control what is logged and how it is formatted.

Log level

IMMICH_LOG_LEVEL sets the minimum severity that is logged. The levels, from most to least verbose:

LevelNotes
verboseVery noisy; useful when diagnosing a specific job
debug
logThe default, commonly known as info
warn
error
fatalOnly errors that stop the server

The level can also be set from the web UI under Administration > Settings > Logging. When IMMICH_LOG_LEVEL is set, it takes precedence and the setting cannot be changed from the UI.

Log format

IMMICH_LOG_FORMAT selects the output format.

ValueOutput
consoleThe default. Human-readable, one line per entry
jsonOne JSON object per line, for log aggregation

Use json for deployments that ship logs to a system such as Grafana Loki, the ELK stack, Datadog, or Splunk.

JSON format

{"level":"log","pid":36,"timestamp":1766533331507,"message":"Initialized websocket server","context":"WebsocketRepository"}
{"level":"warn","pid":48,"timestamp":1766533331629,"message":"Unable to open /build/www/index.html, skipping SSR.","context":"ApiService"}
{"level":"error","pid":36,"timestamp":1766533331690,"message":"Failed to load plugin immich-core:","context":"Error"}

Each object contains:

FieldMeaning
levelLog level of the entry
pidProcess ID that emitted it
timestampUnix timestamp in milliseconds
messageThe log message
contextService or component that generated the entry

Color

Console output is color-coded by default. Setting NO_COLOR to any non-empty value disables it, following the NO_COLOR convention.

VariableEffect
NO_COLORAny non-empty value disables color-coded console output

This is worth setting when logs are captured to a file or piped into a tool that does not interpret ANSI escape codes, since the escape sequences would otherwise appear as literal characters. It has no effect on json output, which is never colorized.

See Environment Variables for these variables alongside the rest, and Monitor Immich for wiring logs into a monitoring stack.