将Apache日志重定向到STDOUT

时间:2016-10-26 13:27:07

标签: linux apache docker

我有一个在后台运行apache服务器的docker容器(apachectl start&),我通过 CustomLog / dev / stdout ErrorLog / dev将日志定向到STDOUT / STDERR / stderr 指令。

现在,当我调用包含apache start命令(apachectl start&)的脚本时,我无法在控制台上查看日志。

但是,如果使用 apachectl start -DFOREGROUND 作为命令,我可以在控制台上看到输出。

我们如何获取在后台运行的apache的控制台日志?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以使用 docker logs container_name 查看这些日志。这将显示 documentation 中提到的容器的 STDOUT 和 STDERR 输出。

答案 1 :(得分:0)

如果您的容器运行主Bash脚本,则可以添加以下重定向:

sudo ln -sf /proc/$$/fd/1 /var/log/apache2/access.log
sudo ln -sf /proc/$$/fd/2 /var/log/apache2/error.log

它将把Apache输出重定向到当前Bash的stdout / stderr。创建符号链接后,请确保(重新)启动Apache,否则Apache将看不到它。

如果Apache作为systemd / init.d服务运行,那就很好。换句话说,Apache不需要在Bash中运行。

对我们来说,Docker容器的目的是运行连续的集成测试,因此我将行添加到了.gitlab-ci.yml文件中。

某些背景:每个进程都有自己的stdout / stderr。 Bash的另一个实例不一定会连接到相同的stdout / stderr。同样,如果Apache作为服务运行,OP的Apache指令 ErrorLog / dev / stderr 会将其写入系统日志或日志中。

相关问题