我正在尝试将我的 php 错误配置为输出到 docker 日志。我读过的所有文档都表明 docker 日志与来自 /proc/self/fd/1 和 /proc/self/fd/2 的容器 stdout 和 stderr 相关联。我使用以下命令从我的 php 错误日志文件 /var/log/php_errors.log 到 /proc/self/fd/1 创建了一个符号链接:
ln -sf /proc/self/fd/1 /var/log/php_errors.log
链接错误日志后,我通过运行这个 php 脚本测试了它的功能:
<?php
error_log("This is a custom error message constructed to test the php error logging functionality of this site.\n");
?>
输出将错误消息回显到控制台,因此我可以看到 php 错误日志现在被重定向到容器中的标准输出,但是当我运行时,docker logs -f <containername>
我从未在日志中看到错误消息。从容器内部回显也不会显示在日志中,这很令人困惑,因为我的理解是回显命令是标准输出。
进一步阅读告诉我,docker logs 只会显示 pid 1 的输出,这可能是问题所在。如果是这种情况,我如何正确配置我的 php 错误日志记录以显示在容器外的 docker 日志中。
我还检查了我是否使用了默认的 json-file docker 驱动程序,并在我的本地环境和 Web 服务器上都尝试过。