在 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 日志格式了。