如何在 Apache 日志中记录 PHP 文件名?

如何在 Apache 日志中记录 PHP 文件名?

我使用的是 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"

相关内容