PHP日志记录
2019-03-09 本文已影响0人
程序员有话说
背景
在生产环境中日志的重要性显而易见,能快速定位问题和程序的调优。在LNMP架构中怎么记录好程序中的错误日志。
设置error_log记录PHP日志信息
#将会向PHP报告发生的每个错误
error_reporting = E_ALL
#关闭页面显示才能将错误回写到日志文件
display_errors = Off
#开启错误日志
log_errors = On
#设置每个日志项的最大长度
log_errors_max_len = 1024
#指定产生的错误
error_log = /var/php_errors.log
不仅可以记录满足error_reporting所定义规则的所有错误,而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。
# 程序中修改以上配置
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //这个值好像是个PHP的常量
ini_set("error_log","<日志文件名>")
ini_set("log_errors",1);
php-fpm 错误日志
php-fpm只会记录php-fpm的错误信息
#默认位置 安装目录下的 log/php-fpm.log
error_log = log/php-fpm.log
#错误级别 alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
log_level = notice
php-fpm慢日志(检查哪个脚本执行时间长)
#设置慢日志的存放位置
slowlog = var/log/slow.log
#设置一个超时的参数
request_slowlog_timeout = 1s # 0则表示关闭
Nginx日志配置
作用域 : http, server, location, if in location, limit_except
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;
如何解决nginx下php-fpm不记录php错误
- Nginx是一个web服务器,access_log日志只有对访问页面的记录,不会有php 的 error_log信息。
- Nginx服务器把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog,因为php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。