2015-07-28 17:02:57 -04:00
<!-- [metadata]>
+++
title = "Configuring Logging Drivers"
description = "Configure logging driver."
2015-08-06 18:50:44 -04:00
keywords = ["docker, logging, driver, Fluentd"]
2015-07-28 17:02:57 -04:00
[menu.main]
parent = "smn_logging"
weight=-1
+++
<![end-metadata]-->
# Configure logging drivers
The container can have a different logging driver than the Docker daemon. Use
the `--log-driver=VALUE` with the `docker run` command to configure the
container's logging driver. The following options are supported:
| `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 likeGraylog or Logstash. |
| `fluentd` | Fluentd logging driver for Docker. Writes log messages to `fluentd` (forward input). |
2015-08-04 20:35:06 -04:00
| `awslogs` | Amazon CloudWatch Logs logging driver for Docker. Writes log messages to Amazon CloudWatch Logs. |
2015-08-27 19:03:46 -04:00
| `splunk` | Splunk logging driver for Docker. Writes log messages to `splunk` using HTTP Event Collector. |
2015-07-28 17:02:57 -04:00
2015-11-11 14:47:42 -05:00
The `docker logs` command is available only for the `json-file` and `journald`
logging drivers.
2015-07-28 17:02:57 -04:00
2015-10-13 12:44:17 -04:00
The `labels` and `env` options add additional attributes for use with logging drivers that accept them. Each option takes a comma-separated list of keys. If there is collision between `label` and `env` keys, the value of the `env` takes precedence.
2015-10-13 02:39:47 -04:00
To use attributes, specify them when you start the Docker daemon.
```
docker daemon --log-driver=json-file --log-opt labels=foo --log-opt env=foo,fizz
```
Then, run a container and specify values for the `labels` or `env` . For example, you might use this:
```
docker run --label foo=bar -e fizz=buzz -d -P training/webapp python app.py
2015-10-16 09:07:52 -04:00
```
2015-10-13 02:39:47 -04:00
2015-10-13 12:44:17 -04:00
This adds additional fields to the log depending on the driver, e.g. for
2015-10-13 02:39:47 -04:00
`json-file` that looks like:
"attrs":{"fizz":"buzz","foo":"bar"}
2015-10-13 12:44:17 -04:00
## json-file options
The following logging options are supported for the `json-file` logging driver:
--log-opt max-size=[0-9+][k|m|g]
--log-opt max-file=[0-9+]
--log-opt labels=label1,label2
--log-opt env=env1,env2
Logs that reach `max-size` are rolled over. You can set the size in kilobytes(k), megabytes(m), or gigabytes(g). eg `--log-opt max-size=50m` . If `max-size` is not set, then logs are not rolled over.
`max-file` specifies the maximum number of files that a log is rolled over before being discarded. eg `--log-opt max-file=100` . If `max-size` is not set, then `max-file` is not honored.
If `max-size` and `max-file` are set, `docker logs` only returns the log lines from the newest log file.
2015-08-06 18:50:44 -04:00
## syslog options
2015-07-28 17:02:57 -04:00
The following logging options are supported for the `syslog` logging driver:
--log-opt syslog-address=[tcp|udp]://host:port
--log-opt syslog-address=unix://path
--log-opt syslog-facility=daemon
2015-08-06 18:50:44 -04:00
--log-opt tag="mailer"
2015-07-28 17:02:57 -04:00
`syslog-address` specifies the remote syslog server address where the driver connects to.
If not specified it defaults to the local unix socket of the running system.
If transport is either `tcp` or `udp` and `port` is not specified it defaults to `514`
The following example shows how to have the `syslog` driver connect to a `syslog`
remote server at `192.168.0.42` on port `123`
$ docker run --log-driver=syslog --log-opt syslog-address=tcp://192.168.0.42:123
The `syslog-facility` option configures the syslog facility. By default, the system uses the
`daemon` value. To override this behavior, you can provide an integer of 0 to 23 or any of
the following named facilities:
* `kern`
* `user`
* `mail`
* `daemon`
* `auth`
* `syslog`
* `lpr`
* `news`
* `uucp`
* `cron`
* `authpriv`
* `ftp`
* `local0`
* `local1`
* `local2`
* `local3`
* `local4`
* `local5`
* `local6`
* `local7`
2015-08-06 18:50:44 -04:00
By default, Docker uses the first 12 characters of the container ID to tag log messages.
2015-10-09 19:50:41 -04:00
Refer to the [log tag option documentation ](log_tags.md ) for customizing
2015-08-06 18:50:44 -04:00
the log tag format.
2015-07-28 17:02:57 -04:00
2015-08-06 18:50:44 -04:00
## journald options
2015-07-28 17:02:57 -04:00
The `journald` logging driver stores the container id in the journal's `CONTAINER_ID` field. For detailed information on
2015-10-09 19:50:41 -04:00
working with this logging driver, see [the journald logging driver ](journald.md )
2015-07-28 17:02:57 -04:00
reference documentation.
2015-08-06 18:50:44 -04:00
## gelf options
2015-07-28 17:02:57 -04:00
The GELF logging driver supports the following options:
--log-opt gelf-address=udp://host:port
2015-08-06 18:50:44 -04:00
--log-opt tag="database"
2015-10-13 02:39:47 -04:00
--log-opt labels=label1,label2
--log-opt env=env1,env2
2015-07-28 17:02:57 -04:00
The `gelf-address` option specifies the remote GELF server address that the
driver connects to. Currently, only `udp` is supported as the transport and you must
specify a `port` value. The following example shows how to connect the `gelf`
driver to a GELF remote server at `192.168.0.42` on port `12201`
$ docker run --log-driver=gelf --log-opt gelf-address=udp://192.168.0.42:12201
2015-08-06 18:50:44 -04:00
By default, Docker uses the first 12 characters of the container ID to tag log messages.
2015-10-09 19:50:41 -04:00
Refer to the [log tag option documentation ](log_tags.md ) for customizing
2015-08-06 18:50:44 -04:00
the log tag format.
2015-10-13 02:39:47 -04:00
The `labels` and `env` options are supported by the gelf logging
driver. It adds additional key on the `extra` fields, prefixed by an
underscore (`_`).
// […]
"_foo": "bar",
"_fizz": "buzz",
// […]
2015-07-28 17:02:57 -04:00
2015-08-06 18:50:44 -04:00
## fluentd options
2015-07-28 17:02:57 -04:00
You can use the `--log-opt NAME=VALUE` flag to specify these additional Fluentd logging driver options.
- `fluentd-address` : specify `host:port` to connect [localhost:24224]
2015-08-06 18:50:44 -04:00
- `tag` : specify tag for `fluentd` message,
2015-07-28 17:02:57 -04:00
For example, to specify both additional options:
2015-08-06 18:50:44 -04:00
`docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag=docker.{{.Name}}`
2015-07-28 17:02:57 -04:00
If container cannot connect to the Fluentd daemon on the specified address,
the container stops immediately. For detailed information on working with this
2015-10-09 19:50:41 -04:00
logging driver, see [the fluentd logging driver ](fluentd.md )
2015-08-04 20:35:06 -04:00
2015-10-13 02:39:47 -04:00
2015-08-04 20:35:06 -04:00
## Specify Amazon CloudWatch Logs options
The Amazon CloudWatch Logs logging driver supports the following options:
--log-opt awslogs-region=< aws_region >
--log-opt awslogs-group=< log_group_name >
--log-opt awslogs-stream=< log_stream_name >
2015-10-09 19:50:41 -04:00
For detailed information on working with this logging driver, see [the awslogs logging driver ](awslogs.md ) reference documentation.
2015-08-27 19:03:46 -04:00
## Splunk options
The Splunk logging driver requires the following options:
--log-opt splunk-token=< splunk_http_event_collector_token >
--log-opt splunk-url=https://your_splunk_instance:8088
For detailed information about working with this logging driver, see the [Splunk logging driver ](splunk.md )
reference documentation.