You can modify the destination and log retention of task logs by specifying any of the following environment variables within the task definition:
| Environment Variable | Default | Short Description |
|---|---|---|
CONTAINER_LOGGER_DESTINATION_TYPE |
logrotate |
Where the task logs should be directed: either the task’s sandbox or journald. |
CONTAINER_LOGGER_LOGROTATE_MAX_STDOUT_SIZE |
2MB |
The maximum size of the stdout file in the sandbox before log rotation is triggered. |
CONTAINER_LOGGER_LOGROTATE_STDOUT_OPTIONS |
rotate 9 |
Options to pass to logrotate when rotating the stdout file. |
CONTAINER_LOGGER_LOGROTATE_MAX_STDERR_SIZE |
2MB |
The maximum size of the stderr file in the sandbox before log rotation is triggered. |
CONTAINER_LOGGER_LOGROTATE_STDERR_OPTIONS |
rotate 9 |
Options to pass to logrotate when rotating the stderr file. |
CONTAINER_LOGGER_EXTRA_LABELS |
"{}" |
Extra key-value pairs to tag each log line when outputting to journald. |
Details
Destination Type
The CONTAINER_LOGGER_DESTINATION_TYPE takes three possible arguments:
logrotate(default)journaldjournald+logrotate
The use of journald options is not recommended, due to
journald performance issues.
When enabled, logs are piped directly into the node’s journald, along
with some labels like the AGENT_ID, EXECUTOR_ID, and CONTAINER_ID.
The logrotate option will place logs (files named stdout and stderr)
inside the task sandbox and create additional files for rotating these
logs (*.logrotate.conf and *.logrotate.state).
See the Logging Reference for information on how to read these logs.
Max Sizes
The CONTAINER_LOGGER_LOGROTATE_MAX_STDOUT_SIZE and
CONTAINER_LOGGER_LOGROTATE_MAX_STDERR_SIZE options control the maximum
size of these log files. Upon reaching this threshold, logrotation
is triggered.
Sizes must be an integer of less than 2^64 and must be suffixed with a
unit such as B (bytes), KB, MB, GB, or TB. There should be no
whitespace between the integer and unit.
Examples:
2MB1234B1TB
Logrotate Options
The CONTAINER_LOGGER_LOGROTATE_STDOUT_OPTIONS and
CONTAINER_LOGGER_LOGROTATE_STDERR_OPTIONS options control the parameters
passed to logrotate for each rotation. There are no restrictions on
arguments. Refer to the man page
for possible values.
Each logrotate rule should be newline (\n) separated. For example:
rotate 10\ncompress\ndelaycompressdaily\nmaxage 10\nnomail
Some rules are unnecessary or will be overriden:
sizeis overridden by the values ofCONTAINER_LOGGER_LOGROTATE_MAX_STDOUT_SIZEorCONTAINER_LOGGER_LOGROTATE_MAX_STDERR_SIZE.- Time-based rotation will not work as expected. Rotation is triggered based purely on how much has been written. So if rotation is set to fire at 2MB, but less than 2MB is written, then rotation will never occur.
copyandcopytruncateare not necessary because the log files will not be written to while rotating. This means no log lines can be lost (although they can be cut into separate files if too long).
DC/OS Documentation