我遇到了这个问题,在 Google 上搜索了一下,找到了一些解决方案,但它不太可能正常工作。有人能给出解决方案吗?
我在 Ubuntu 14.04 机器上运行 Apache2。其中只运行一个虚拟主机,并且在/var/www/html
我们的根目录下有一个文档根目录。
在 html 目录中,我们的代码包含子目录。例如 dir1、dir2。我需要自定义错误日志,例如与 dir1 下的代码相关的所有错误日志都应位于 dir1 内,对于 dir2 也是如此。
我如何自定义错误日志?
答案1
根据这篇文章https://stackoverflow.com/questions/10395043/apache-server-multiple-directories-different-error-logs
错误日志无法实现,因为 ErrorLog 指令仅在服务器配置或虚拟主机上下文中起作用。可以使用 setenvif 模块提供的功能分离 AccessLog。
或者,你可以尝试类似的方法:
ErrorLog "|/usr/bin/tee -a ${APACHE_LOG_DIR}/error.log /var/www/apachelogs/error.txt"
只需在其中放置更复杂的过滤脚本,也许您就能实现您的需要。
有些吹毛求疵,为什么你需要在带有代码的目录中记录错误日志?在我看来,这是一个安全威胁。
答案2
我相信这就是你想要的:
SetEnvIf Request_URI ^/app/subapp1(/|$) subapp1
SetEnvIf Request_URI ^/app/subapp2(/|$) subapp2
CustomLog /absolute/path/to/app/subapp1/log/access_log common env=subapp1
CustomLog /absolute/path/to/app/subapp2/log/access_log common env=subapp2
来源:
答案3
只需在您的虚拟主机中使用
错误日志 error.log
它会将错误文件写入导致错误的脚本所在的同一文件夹中。
错误
会将错误写入
/public_html/some/dir/error.log