我在使用docker日志记录时遇到了问题,阅读了很多资料后并没有找到解决方法:是否有一种方法可以丢弃/var/log/messages中docker守护程序的消息并选择另一个位置进行记录?
好的,我知道这个问题很老了,但我认为它没有得到很好的回答,也没有给出正确的答案。
首先,它将消息保存到特定的位置的原因始于rsyslog配置 (/etc/rsyslog.conf
) 中的一行:
$ModLoad imjournal # provides access to the systemd journal
/var/log/messages
。/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
配置rsyslog将Docker日志隔离到自己的文件中。为此,请创建/etc/rsyslog.d/10-docker.conf文件,并将以下内容复制到该文件中。
# Docker logging
daemon.* {
/var/mylog
stop
}
daemon.json
配置文件中。有多个可用的驱动程序,例如Syslog、基于HTTP的日志记录等。
更新
以下是来自文档的Syslog示例配置部分:{
"log-driver": "syslog",
"log-opts": {
"syslog": "udp://1.2.3.4:1111"
}
}
dockerd
。 - Vyacheslav Shvets