From 36e36d030fa638b5f5a136ed92046695f0c89f53 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Fri, 27 Oct 2023 13:40:24 +0200 Subject: [PATCH] chore: tier 1 freshness: content/config/containers/logging/configure.md Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- .../config/containers/logging/configure.md | 83 +++++++++---------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/content/config/containers/logging/configure.md b/content/config/containers/logging/configure.md index dc228828fa..80f777c3d6 100644 --- a/content/config/containers/logging/configure.md +++ b/content/config/containers/logging/configure.md @@ -1,41 +1,42 @@ --- -description: Configure logging driver. +description: Learn how to configure logging driver for the Docker daemon keywords: docker, logging, driver title: Configure logging drivers aliases: -- /engine/reference/logging/overview/ -- /engine/reference/logging/ -- /engine/admin/reference/logging/ -- /engine/admin/logging/overview/ + - /engine/reference/logging/overview/ + - /engine/reference/logging/ + - /engine/admin/reference/logging/ + - /engine/admin/logging/overview/ --- Docker includes multiple logging mechanisms to help you [get information from running containers and services](index.md). These mechanisms are called logging drivers. Each Docker daemon has a default logging driver, which each container uses unless you configure it to use a -different logging driver, or "log-driver" for short. +different logging driver, or log driver for short. As a default, Docker uses the [`json-file` logging driver](json-file.md), which caches container logs as JSON internally. In addition to using the logging drivers included with Docker, you can also implement and use [logging driver plugins](plugins.md). -> **Tip: use the "local" logging driver to prevent disk-exhaustion** -> +> **Tip: use the `local` logging driver to prevent disk-exhaustion** +> > By default, no log-rotation is performed. As a result, log-files stored by the -> default [`json-file` logging driver](json-file.md) logging driver can cause +> default [`json-file` logging driver](json-file.md) logging driver can cause > a significant amount of disk space to be used for containers that generate much > output, which can lead to disk space exhaustion. -> +> > Docker keeps the json-file logging driver (without log-rotation) as a default > to remain backward compatibility with older versions of Docker, and for situations > where Docker is used as runtime for Kubernetes. -> -> For other situations, the "local" logging driver is recommended as it performs +> +> For other situations, the `local` logging driver is recommended as it performs > log-rotation by default, and uses a more efficient file format. Refer to the > [Configure the default logging driver](#configure-the-default-logging-driver) -> section below to learn how to configure the "local" logging driver as a default, +> section below to learn how to configure the `local` logging driver as a default, > and the [local file logging driver](local.md) page for more details about the -> "local" logging driver. +> `local` logging driver. +{ .tip } ## Configure the default logging driver @@ -71,7 +72,7 @@ example sets four configurable options on the `json-file` logging driver: ``` Restart Docker for the changes to take effect for newly created containers. -Existing containers do not use the new logging configuration. +Existing containers don't use the new logging configuration automatically. > **Note** > @@ -79,21 +80,19 @@ Existing containers do not use the new logging configuration. > be provided as strings. Boolean and numeric values (such as the value for > `max-file` in the example above) must therefore be enclosed in quotes (`"`). -If you do not specify a logging driver, the default is `json-file`. +If you don't specify a logging driver, the default is `json-file`. To find the current default logging driver for the Docker daemon, run `docker info` and search for `Logging Driver`. You can use the following command on Linux, macOS, or PowerShell on Windows: - ```console $ docker info --format '{{.LoggingDriver}}' json-file ``` - > **Note** -> +> > Changing the default logging driver or logging driver options in the daemon > configuration only affects containers that are created after the configuration > is changed. Existing containers retain the logging driver options that were @@ -121,21 +120,19 @@ To find the current logging driver for a running container, if the daemon is using the `json-file` logging driver, run the following `docker inspect` command, substituting the container name or ID for ``: - ```console $ docker inspect -f '{{.HostConfig.LogConfig.Type}}' json-file ``` - ## Configure the delivery mode of log messages from container to log driver Docker provides two modes for delivering messages from the container to the log driver: -* (default) direct, blocking delivery from container to driver -* non-blocking delivery that stores log messages in an intermediate per-container buffer for consumption by driver +- (default) direct, blocking delivery from container to driver +- non-blocking delivery that stores log messages in an intermediate per-container buffer for consumption by driver The `non-blocking` message delivery mode prevents applications from blocking due to logging back pressure. Applications are likely to fail in unexpected ways when @@ -143,7 +140,7 @@ STDERR or STDOUT streams block. > **Warning** > -> When the buffer is full, new messages will not be enqueued. Dropping messages is often preferred to blocking the +> When the buffer is full, new messages will not be enqueued. Dropping messages is often preferred to blocking the > log-writing process of an application. { .warning } @@ -165,8 +162,8 @@ $ docker run -it --log-opt mode=non-blocking --log-opt max-buffer-size=4m alpine Some logging drivers add the value of a container's `--env|-e` or `--label` flags to the container's logs. This example starts a container using the Docker -daemon's default logging driver (let's assume `json-file`) but sets the -environment variable `os=ubuntu`. +daemon's default logging driver (in the following example, `json-file`) but +sets the environment variable `os=ubuntu`. ```console $ docker run -dit --label production_status=testing -e os=ubuntu alpine sh @@ -186,33 +183,33 @@ documentation for its configurable options, if applicable. If you are using [logging driver plugins](plugins.md), you may see more options. -| Driver | Description | -|:------------------------------|:--------------------------------------------------------------------------------------------------------------| -| `none` | No logs are available for the container and `docker logs` does not return any output. | -| [`local`](local.md) | Logs are stored in a custom format designed for minimal overhead. | -| [`json-file`](json-file.md) | The logs are formatted as JSON. The default logging driver for Docker. | -| [`syslog`](syslog.md) | Writes logging messages to the `syslog` facility. The `syslog` daemon must be running on the host machine. | -| [`journald`](journald.md) | Writes log messages to `journald`. The `journald` daemon must be running on the host machine. | -| [`gelf`](gelf.md) | Writes log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash. | -| [`fluentd`](fluentd.md) | Writes log messages to `fluentd` (forward input). The `fluentd` daemon must be running on the host machine. | -| [`awslogs`](awslogs.md) | Writes log messages to Amazon CloudWatch Logs. | -| [`splunk`](splunk.md) | Writes log messages to `splunk` using the HTTP Event Collector. | -| [`etwlogs`](etwlogs.md) | Writes log messages as Event Tracing for Windows (ETW) events. Only available on Windows platforms. | -| [`gcplogs`](gcplogs.md) | Writes log messages to Google Cloud Platform (GCP) Logging. | -| [`logentries`](logentries.md) | Writes log messages to Rapid7 Logentries. | +| Driver | Description | +| :---------------------------- | :---------------------------------------------------------------------------------------------------------- | +| `none` | No logs are available for the container and `docker logs` does not return any output. | +| [`local`](local.md) | Logs are stored in a custom format designed for minimal overhead. | +| [`json-file`](json-file.md) | The logs are formatted as JSON. The default logging driver for Docker. | +| [`syslog`](syslog.md) | Writes logging messages to the `syslog` facility. The `syslog` daemon must be running on the host machine. | +| [`journald`](journald.md) | Writes log messages to `journald`. The `journald` daemon must be running on the host machine. | +| [`gelf`](gelf.md) | Writes log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash. | +| [`fluentd`](fluentd.md) | Writes log messages to `fluentd` (forward input). The `fluentd` daemon must be running on the host machine. | +| [`awslogs`](awslogs.md) | Writes log messages to Amazon CloudWatch Logs. | +| [`splunk`](splunk.md) | Writes log messages to `splunk` using the HTTP Event Collector. | +| [`etwlogs`](etwlogs.md) | Writes log messages as Event Tracing for Windows (ETW) events. Only available on Windows platforms. | +| [`gcplogs`](gcplogs.md) | Writes log messages to Google Cloud Platform (GCP) Logging. | +| [`logentries`](logentries.md) | Writes log messages to Rapid7 Logentries. | > **Note** > > When using Docker Engine 19.03 or older, the [`docker logs` command](../../../engine/reference/commandline/logs.md) > is only functional for the `local`, `json-file` and `journald` logging drivers. > Docker 20.10 and up introduces "dual logging", which uses a local buffer that -> allows you to use the `docker logs` command for any logging driver. Refer to +> allows you to use the `docker logs` command for any logging driver. Refer to > [reading logs when using remote logging drivers](dual-logging.md) for details. ## Limitations of logging drivers - Reading log information requires decompressing rotated log files, which causes a temporary increase in disk usage (until the log entries from the rotated - files are read) and an increased CPU usage while decompressing. + files are read) and an increased CPU usage while decompressing. - The capacity of the host storage where the Docker data directory resides - determines the maximum size of the log file information. \ No newline at end of file + determines the maximum size of the log file information.