php自定义错误日志,php记录错误日志设置方法

发布时间:2019-11-06编辑:脚本学堂
有关php自定义错误日志的方法,自定义php错误日志处理函数,并提供了错误日志的测试语句,不了解的朋友参考下。

1、打开php.ini
2、打开日志记录,将
log_errors = Off

修改为:
log_errors = On

3、将php.ini保存退出并重启web服务器
4、在代码最前面添加:
 

复制代码 代码示例:

<?php
//错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    $log_file = "./php_%s_log_".date("Ymd").".log";//定义日志文件存放目录和文件名
    $template = '';
    switch ($errno) {
    case E_USER_ERROR:
   $template .= "用户ERROR级错误,必须修复 错误编号[$errno] $errstr ";
   $template .= "错误位置 文件$errfile,第 $errline 行n";
   $log_file = sprintf($log_file,'error');
   exit(1);//系统退出
   break;

   case E_USER_WARNING:
   $template .= "用户WARNING级错误,建议修复 错误编号[$errno] $errstr ";
   $template .= "错误位置 文件$errfile,第 $errline 行n";
   $log_file = sprintf($log_file,'warning');
   break;

    case E_USER_NOTICE:
   $template .= "用户NOTICE级错误,不影响系统,可不修复 错误编号[$errno] $errstr ";
   $template .= "错误位置 文件$errfile,第 $errline 行n";
    $log_file = sprintf($log_file,'notice');
   break;

    default:
   $template .= "未知错误类型: 错误编号[$errno] $errstr  ";
   $template .= "错误位置 文件$errfile,第 $errline 行n";
   $log_file = sprintf($log_file,'unknown');
   break;
    }
    file_put_contents($log_file,$template,FILE_APPEND);

    return true;
}

$error_handler = set_error_handler("myErrorHandler");//开启自定义错误日志

5、测试
写一段错误代码
echo 1/0;
查看定义的路径下是否多了一个日志文件呢?:)

注:以下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT。

不过当你开启了错误日志系统(php.ini中的log_error = on)并且指定了系统日志文件(同样也是php.ini中的error_log=路径名),并且error_reporting开启了全部后,以上的错误都会作为系统错误日志而记录在你定义的文件中。