Docker-如何使用 syslog 在主机上记录日志?
Posted
技术标签:
【中文标题】Docker-如何使用 syslog 在主机上记录日志?【英文标题】:Docker- How to use syslog to record logs on host machine? 【发布时间】:2017-05-10 10:11:45 【问题描述】:我希望将容器的日志保存到主机中每个容器的文件中。我通过logging driver阅读了关于这样做的信息。
由于我的主机运行 ubuntu 14.04,默认运行 rsyslog
,我想使用 syslog
。
我所做的是使用以下命令来运行容器:
docker run -it --log-driver=syslog --log-opt syslog-address=udp://localhost:514 prashant23/ubuntu-java:sample-jdbc-project bash
我没有任何错误地进入容器。就这样?我怎么知道在哪里可以看到主机上的日志?我做对了吗?我不知道syslog
。我是否也需要在我的容器上配置系统日志?有没有更好的方法来实现同样的目标。
我不确定我应该使用什么作为syslog-address
。从哪里可以得到这个参数的值?我在某处读到的默认是udp://localhost:514
【问题讨论】:
【参考方案1】:使用syslog
驱动,你的Docker容器会将日志数据写入/var/log/syslog
文件。您应该在该文件中找到您的容器日志。
syslog-address
仅在您使用外部系统日志服务器时才需要,这似乎不是您的情况。
使用默认驱动json-file
,Docker会在这个路径下创建一个日志文件。
/var/lib/docker/containers/[container-id]/[container-id]-json.log
【讨论】:
谢谢。我不能指定一个单独的文件来存储主机 macine 上的日志吗?喜欢/var/log/docker/conatiner1.log
和/var/log/docker/conatiner2.log
?
感谢您的编辑。但这是默认行为。如果我正在使用 syslog 并希望将日志记录到我的自定义位置怎么办。仅当您没有使用任何日志记录驱动程序(默认)时,上述路径才有效,但如果您使用 syslog 驱动程序,则上述位置不存在。我通过使用 syslog 获取日志,只是我希望它位于每个容器的单独文件中,我希望创建日志的文件的路径和名称是可配置的。
@PrashantPrabhakarSingh 这是系统日志配置,不是吗?
@kstromeiraos 我正在使用默认不包含 syslog 的 Linux 发行版。您能否提供在 dockerfile 中添加安装的说明?我见过这个: RUN apt-get -y install rsyslog 但它似乎不起作用。当我查看“/var/log”时,我没有看到任何“syslog”文件夹以上是关于Docker-如何使用 syslog 在主机上记录日志?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Docker 中运行 syslog 并将其作为主机的 syslog 守护进程公开给主机?