Docker Logging Last Modified: 2016-08-14
Logging from containers.
Docker Logging

Logging From Containers

Docker logs STDIN, STDOUT and STDERR from the container automatically.

Apps that log to file

TODO Options to retrieve

Logging Drivers

Log drivers can be used by specifying the --log-driver <driver> argument (and optionally driver-specific --log-opt arguments) in docker daemon startup. The arguments can be given when starting the docker daemon manually with the docker daemon command or in the docker startup configuration file (e.g. /etc/default/docker) on the host (DOCKER_OPTS directive). The daemon-level log driver can be overridden by specifying the same arguments to docker run or docker create. reference.

  • none Disables any logging for the container. docker logs won’t be available with this driver.
  • json-file Default logging driver for Docker. Writes JSON messages to file.
  • syslog Syslog logging driver for Docker. Writes log messages to syslog.
  • journald Journald logging driver for Docker. Writes log messages to journald.
  • gelf Graylog Extended Log Format (GELF) logging driver for Docker. Writes log messages to a GELF endpoint like Graylog or Logstash.
  • fluentd Fluentd logging driver for Docker. Writes log messages to fluentd (forward input).
  • awslogs Amazon CloudWatch Logs logging driver for Docker. Writes log messages to Amazon CloudWatch Logs.
  • splunk Splunk logging driver for Docker. Writes log messages to splunk using HTTP Event Collector.
  • etwlogs ETW logging driver for Docker on Windows. Writes log messages as ETW events.
  • gcplogs Google Cloud Logging driver for Docker. Writes log messages to Google Cloud Logging.

JSON File

The json-file logging driver is used by default. The logs are stored on the host under the container directory /var/lib/docker/containers/<container id>/<container-id>-json.log. This driver does not rotate logs by default and can therefore eventually fill the host filesystem. Use the --log-opt arguments to configure log rotation reference. Another method is to use the linux logrotate tool on the host: create a rule for /var/lib/docker/containers/*/*.log like here.

TODO check at least journald https://docs.docker.com/engine/admin/logging/journald/ and syslog drivers

TODO logging services in orchestration platforms?

TODO (r)syslog (filter, fwd to different file or external tcp or udp endpoint) TODO spout gathers logs through docker API and forwards TODO ELK TODO file grab