如何在单个主机中分隔多个容器的日志?

时间:2016-06-12 04:28:21

标签: logging docker

我必须使用相同的应用程序运行多个容器。但是,日志记录逻辑位于应用程序之下,并将其写入日志文件。

在这种情况下,如何在不修改应用程序日志记录代码的情况下为应用程序分离不同实例的日志。

修改

  • 我们希望日志是持久的。
  • 我们还希望将日志文件存储在主机的同一目录下,例如/var/log/app/*.log。这主要用于与以前的设置保持一致。
  • 我们无法修改日志记录逻辑是我们正在测试使用docker。我们需要应用程序在docker和normal情境下运行而不修改代码只是为了在docker中添加测试支持。
  • 目前,我们希望使用共享卷,因为所有应用程序几乎都开发了写日志到文件。

1 个答案:

答案 0 :(得分:2)

如上所述,如果该日志文件位于容器内,则同一文件因容器而异,前提是应用程序的每个实例都在其自己的容器中启动。

但您也可以使用docker logs --follow <containerID>命令监控每个容器的日志 您可以更改这些日志的定向位置with the log driver

  

我们希望日志持久化   我们还希望将日志文件存储在主机的同一目录下,如/var/log/app/*.log

每个应用程序实例的一个选项是mount a different host file to the same container file

docker run -v /var/log/app/app1.log:/path/to/log ...
docker run -v /var/log/app/app2.log:/path/to/log ...
docker run -v /var/log/app/app3.log:/path/to/log ...
  

我可以使用env获取其他东西的docker容器ID并将其作为后缀附加吗?

启动容器(docker run)时,尚无ID。

但是一旦启动了容器,您就可以使用docker ps获取其ID并将符号链接添加到您的日志文件中。

ln -s app1.log app1_ID.log