我必须使用相同的应用程序运行多个容器。但是,日志记录逻辑位于应用程序之下,并将其写入日志文件。
在这种情况下,如何在不修改应用程序日志记录代码的情况下为应用程序分离不同实例的日志。
答案 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