我使用的是 Apache 2 + PHP 8,并将 PHP 警告和错误写入 Apache 错误日志文件中。以下是写入日志的示例:
[Wed Aug 10 08:15:54.502158 2022] [php:warn] [pid 15437] [client 64.124.8.31:24644] PHP Warning: Constant ABSPATH already defined in /var/www/html/wp-config.php on line 43
由于我不知道导致警告/错误的 PHP 文件,因此很难进行故障排除。
我想要类似的东西:
[Wed Aug 10 08:15:54.502158 2022] [php:warn] [pid 15437] [client 64.124.8.31:24644] [/path/to/myFileName.php] PHP Warning: Constant ABSPATH already defined in /var/www/html/wp-config.php on line 43
有人知道如何配置这个吗?
感谢您的帮助。
答案1
Apache httpd 允许您通过定义自定义ErrorLogFormat
。
据我所知,不幸的是,这并不能提供你想要的东西,但你可以做的是:
%L
在您的错误日志中包含一个ErrorLogFormat
,它将包含请求的唯一“日志 ID”。
调整LogFormat
用于您的access_log
包括类似的%L
并从错误日志中记录相同的唯一“日志 ID”(如果此请求的错误日志中没有记录任何内容,则为“-”)。
使用它将错误与特定请求(和文件)关联起来。
更高级的配置将是这样的:
ErrorLogFormat "[%{cu}t] [%-m:%-l] [R:%L] [C:%{C}L] %M"<br/>
ErrorLogFormat request "[%{cu}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"<br/>
ErrorLogFormat request "[%{cu}t] [R:%L] UA:'%+{User-Agent}i'"<br/>
ErrorLogFormat request "[%{cu}t] [R:%L] Referer:'%+{Referer}i'"<br/>
ErrorLogFormat connection "[%{cu}t] [C:%{c}L] local\ %a remote\ %A"<br/>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" [R:%L] [F:%f]" ourlogformat
CustomLog "log/our_access_log" ourlogformat
ErrorLog "log/our_error_log"