Anatoli
Anatoli

Reputation: 919

Change docker log messages location

I met a problem with docker logging and after reading a lot of sources didn't find solution: is there a way to discard messages of docker daemon in /var/log/messages and select another location?

Upvotes: 3

Views: 15889

Answers (3)

Colin Moreno Burgess
Colin Moreno Burgess

Reputation: 1602

Ok, I know that this question is quite old but I don't think it has been answered well and no correct answer has been stated.

First of all the reason why it saves messages to that particular place starts in rsyslog configuration (/etc/rsyslog.conf) with the line:

$ModLoad imjournal # provides access to the systemd journal

So, because docker saves information to systemd journal it ends at /var/log/messages.

To be able to save it to other places, you have to create a rule like the following at /etc/rsyslog.d/docker.conf.

$FileCreateMode 0644
template(name="DockerLogFileName" type="list") {
   constant(value="/var/log/docker/")
   property(name="syslogtag" securepath="replace" \
            regex.expression="docker/\\(.*\\)\\[" regex.submatch="1")
   constant(value="/docker.log")
}
if $programname == 'dockerd' then \
  /var/log/docker/combined.log
if $programname == 'dockerd' then \
  if $syslogtag contains 'docker/' then \
    ?DockerLogFileName
  else
    /var/log/docker/no_tag/docker.log
$FileCreateMode 0600

I found the information for this configuration here: https://www.simulmedia.com/blog/2016/02/19/centralized-docker-logging-with-rsyslog/

Upvotes: 7

Mayur Nagekar
Mayur Nagekar

Reputation: 811

Configure rsyslog to isolate the Docker logs into their own file. To do this create /etc/rsyslog.d/10-docker.conf and copy the following content into the file.

# Docker logging
daemon.* {
 /var/mylog
 stop
}

In summary this will write all logs for the daemon category to /var/mylog then stop processing that log entry so it isn’t written to the systems default syslog file.

Upvotes: 2

Frank Schmitt
Frank Schmitt

Reputation: 30785

According to the Docker documentation, you can specify a different driver either as a command-line argument for the docker daemon or (preferably) in the daemon.json config file. Several drivers are available, e.g. for Syslog, HTTP-based logging, ...

Update

Here's an example configuration section for Syslog (from the documentation):

{
  "log-driver": "syslog",
  "log-opts":  {
    "syslog": "udp://1.2.3.4:1111"
  }
}

Upvotes: 1

Related Questions