我有一个在后台运行apache服务器的docker容器(apachectl start&),我通过 CustomLog / dev / stdout 和 ErrorLog / dev将日志定向到STDOUT / STDERR / stderr 指令。
现在,当我调用包含apache start命令(apachectl start&)的脚本时,我无法在控制台上查看日志。
但是,如果使用 apachectl start -DFOREGROUND 作为命令,我可以在控制台上看到输出。
我们如何获取在后台运行的apache的控制台日志?
感谢您的帮助
答案 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 会将其写入系统日志或日志中。