美文网首页
PHP日志记录

PHP日志记录

作者: 程序员有话说 | 来源:发表于2019-03-09 16:26 被阅读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的错误日志。

    相关文章

      网友评论

          本文标题:PHP日志记录

          本文链接:https://www.haomeiwen.com/subject/sbispqtx.html