如何将 Apache 日志重定向到 STDOUT 和 Apache 日志文件

Rit*_*esh 5 apache httpd.conf docker

我正在运行一个 docker 容器,并且想要将 apache 服务器的日志写入 STDOUT 和文件。

知道我的 Apache httpd.conf 文件需要什么样的配置吗?

任何帮助将不胜感激!

Mao*_*dok 6

你可以试试这个:

CustomLog "| /usr/bin/tee /var/log/access_log" common

来自 apache.org 文档:Apache httpd 能够通过管道写入错误并访问日志文件到另一个进程,而不是直接访问文件。此功能极大地提高了日志记录的灵活性,而无需向主服务器添加代码。为了将日志写入管道,只需将文件名替换为管道字符“|”,后跟应在其标准输入上接受日志条目的可执行文件的名称。Apache 将在服务器启动时启动管道日志进程,如果服务器运行时崩溃,Apache 将重新启动它。(这最后一个功能就是为什么我们可以将此技术称为“可靠的管道日志记录”。)

  • 附加说明:您可以在同一上下文中多次定义和使用 CustomLog,也就是说,您可以使用 CustomLog 直接指向文件,以及使用管道和其他内容等的另一个 CustomLog 指令。 (6认同)
  • 谢谢@maoz-zadok!在与这个问题作斗争一两个小时后,这对我起了作用。我正在运行一个带有“2.4.43-alpine”的容器,我想将日志写入标准输出和卷上的文件。我可以使用“CustomLog /proc/self/fd/1 common”将它们写入标准输出,并使用“CustomLog /usr/local/apache2/logs/access.log common”写入文件,但使用“CustomLog”|/proc/ self/fd/1 /usr/local/apache2/logs/access.log" common` 导致错误“权限被拒绝:AH00104:无法启动管道日志程序”。将 `/usr/bin/tee` 替换为 `/proc/self/df/1` 使其工作。 (2认同)