将所有 404 错误的 Apache 日志集中到单独的文件中(针对所有域)?

将所有 404 错误的 Apache 日志集中到单独的文件中(针对所有域)?

是否可以配置 Apache 日志适用于所有域进入一个集中文件,除了正常的日志文件(也是我想要的)。

我甚至更喜欢只有 404(访问),因此所有域的单个日志文件和只有 404 消息(同时保留在每个虚拟域中设置的日志文件)?

更新 1:访问日志文件

更新 2:我正在寻找一个适用于服务器范围的配置选项,我不想调整每个配置。并且该消息应记录在两个域访问日志中主日志。

答案1

CustomLog 指令有一个env=参数,可以将其添加到末尾。然后可以借助 进行设置mod_rewrite。配置文件应包含以下内容:

RewriteEngine On
# exclude directory index
RewriteCond %{REQUEST_URI} !/index\.(php|html?)$
# exlcude auto-index of directories
RewriteCond %{REQUEST_URI} !/$
# if the request is not a file, directory, or symlink
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# set the "notfound" environment variable
RewriteRule ^ - [E=notfound:true,L]

CustomLog /var/log/apache2/404-requests.log common env=notfound
CustomLog /var/log/apache2/requests.log common env=!notfound

自定义日志文件404-requests.log仅在设置环境时才会记录事件notfound,而日志requests.log将记录其他所有内容。

答案2

我认为每个 VirtualHost 都有自己的日志指令?如果是这样,它们会覆盖任何全局指令。

要获得全局访问日志,您需要从虚拟主机配置中删除或修改日志指令。

相关内容