将日志文件添加到 /var/log/apache2

将日志文件添加到 /var/log/apache2

我正在尝试将 Lumen php 框架日志存储在/var/log/apache2/其安装目录/storage/logs/ 文件夹中。

Lumen-side 很好,因为我可以很好地在 /tmp/ 中写入日志文件。

经过半天的研究、试验和绞尽脑汁,我还是无法理解的是:

  • 我正在运行 Ubuntu 16.04
  • 存储在 /var/log/apache2/ 中的日志文件拥有所有权 root:adm 和 priv -rw-r--r--
  • Apache 仅以 www-data 用户和 www-data 组的一部分身份运行
  • 我知道 logrotate 有配置行“create 640 root adm”,所以新的日志文件就是这样创建的
  • 我认为 selinux 没有运行(未找到 sestatus 命令...)

那么......Apache 如何能够写入其日志文件?

澄清这个谜团可能会解答我的主要问题。我确实希望将 Lumen 框架日志存储在 Lumen 安装目录之外,因为它会被持续集成过程所取代。

我对这个主题和基础知识进行了大量研究,但找不到答案。

答案1

简短回答:因为 Apache 父进程始终由 root 启动和拥有。因此它可以统计信息并写入/var/log/apache2/

root     30089  0.0  0.4 518800 29604 ?        Ss   Jul05   0:09 /usr/sbin/apache2 -k start
www-data 13076  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13077  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13079  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13080  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13081  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13288  0.0  0.2 521180 18036 ?        S    00:17   0:00  \_ /usr/sbin/apache2 -k start

避免使用这个/var/log/apache2功能并将其留给 apache2 进程(仅此而已)可能是一个好主意。就我个人而言,我会创建一个新目录/var/log/lumen/(顺便说一句:您不必使用该/var/log/区域进行日志记录),该目录由您想要记录的给定父进程拥有。或者,设置一个logrotate.d/类似于 apache2 的目录来偶尔清理日志文件夹。您还可以通过 chown 和 logrotate.d 将组设置adm为上述方式,以允许管理员组用户访问给定的日志。

相关内容