在 Ubuntu 系统中,PHP 日志格式可以通过修改 PHP 配置文件 php.ini
或者 Web 服务器(如 Apache 或 Nginx)的配置文件来实现。以下是针对不同情况的格式化方法:
php.ini
:找到你的 php.ini
文件,通常位于 /etc/php/{php_version}/apache2/php.ini
(Apache)或 /etc/php/{php_version}/fpm/php.ini
(Nginx)。使用文本编辑器打开它,例如使用 nano:
sudo nano /etc/php/{php_version}/apache2/php.ini
找到以下行:
log_error_format = "%t %f %l %E: %m%n"
你可以根据需要修改这个格式。例如,如果你想要在日志中包含日期、时间、文件名、行号、错误级别和错误消息,可以使用以下格式:
log_error_format = "%d-%m-%Y %H:%i:%s %F:%l %E: %m%n"
修改完成后,保存并关闭文件。重启 Apache 或 Nginx 以使更改生效:
sudo systemctl restart apache2
# 或者
sudo systemctl restart nginx
对于 Apache,你可以在虚拟主机配置文件中添加 CustomLog
指令来自定义 PHP 错误日志格式。例如:
<VirtualHost *:80>
# ...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SetEnvIf Request_URI "\.php$" dontlog
CustomLog ${APACHE_LOG_DIR}/error_php.log "%t %h %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{ERROR_FILE}e %{ERROR_LINE}e %{ERROR_MESSAGE}e" env=!dontlog
</VirtualHost>
对于 Nginx,你可以在 server
块中使用 error_log
和 access_log
指令来自定义 PHP 错误日志格式。例如:
server {
# ...
error_log /var/log/nginx/error_php.log combined buffer=32k flush=300s;
access_log /var/log/nginx/access_php.log combined buffer=32k flush=300s;
location ~ \.php$ {
# ...
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param ERROR_LOG_FORMAT "%t %h %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{ERROR_FILE}e %{ERROR_LINE}e %{ERROR_MESSAGE}e";
}
}
修改完成后,保存并关闭文件。重启 Apache 或 Nginx 以使更改生效:
sudo systemctl restart apache2
# 或者
sudo systemctl restart nginx
这样,你就可以根据需要自定义 PHP 日志格式了。