【发布时间】:2015-04-09 22:15:11
【问题描述】:
我想使用像 Logentries 这样的集中式日志捕获器,但我不希望它的代理在我的所有容器中运行。因此,我计划让每个服务都记录到其容器的标准输出,然后通过 Docker API 或日志容器将其传递给 Logentries。
问题:如何处理需要输出两个日志的容器?如何在不引入其他日志记录机制的情况下保持它们的清洁和分离?
场景:我有一个 PHP 应用程序,它需要三个组件:Nginx、PHP-FPM 和我的代码。我可以将 Nginx 和 PHP-FPM 放在单独的 Docker 容器中,所以它们会有单独的日志,所以我们很好。但是我的 PHP 必须与 Nginx 位于同一个容器中,这样才能提供服务,对吗?
当我的应用程序需要记录某些内容时(使用 Monolog),我可以将其发送到容器的标准输出(例如,使日志文件成为 /dev/stdout 的链接),但是我无法将 Nginx 和我的应用程序的日志分开。
有没有办法做到这一点?还是我看错了?有没有更好的方法在 Docker 中运行 Nginx + PHP?
【问题讨论】:
-
我对日志方面不太了解,但是“但是我的 PHP 必须与 Nginx 位于同一个容器中,这样才能提供服务,对吧?”绝对是一个错误的假设。我在单独的容器中运行它们,它们通过 TCP/IP 进行合作。
-
你是对的。这是一个错误的假设,但我的 PHP 确实必须与 PHP-FPM 在同一个容器中,这会带来相同类型的问题。
标签: php logging nginx docker logentries