是否可以配置 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 都有自己的日志指令?如果是这样,它们会覆盖任何全局指令。
要获得全局访问日志,您需要从虚拟主机配置中删除或修改日志指令。