A brief discussion on php custom error log

高洛峰
Release: 2023-03-04 08:16:02
Original
1221 people have browsed it

I think there are two reasons:

1. The team needs a unified format of logs for easy management

2. A large number of useless error logs occupy hard disk space, and only meaningful logs need to be recorded.

Then, practice it.

1. Open your php.ini

2. Turn on logging and change

log_errors = Off
Copy after login

to

log_errors = On
Copy after login

3. Save php.ini, exit and restart the web server

4. Add at the front of your code The following code is as follows

<?php
//错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    $log_file = "./php_%s_log_".date("Ymd").".log";//定义日志文件存放目录和文件名
    $template = &#39;&#39;;
    switch ($errno) {
    case E_USER_ERROR:
        $template .= "用户ERROR级错误,必须修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;error&#39;);
        exit(1);//系统退出
        break;
    case E_USER_WARNING:
        $template .= "用户WARNING级错误,建议修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;warning&#39;);
        break;
    case E_USER_NOTICE:
        $template .= "用户NOTICE级错误,不影响系统,可不修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
    $log_file = sprintf($log_file,&#39;notice&#39;);
        break;
    default:
        $template .= "未知错误类型: 错误编号[$errno] $errstr  ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;unknown&#39;);
        break;
    }
    file_put_contents($log_file,$template,FILE_APPEND);
    return true;
}
$error_handler = set_error_handler("myErrorHandler");//开启自定义错误日志
Copy after login

5. Try writing an error code after the code just now

echo 1/0;

See if there is an extra log file under the path you defined? :)

Note: The following levels of errors cannot be handled by user-defined functions: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most E_STRICTs generated in the file where the set_error_handler() function is called.

However, when you enable the error logging system (log_error = on in php.ini) and specify the system log file (also error_log = path name in php.ini), and error_reporting is turned on, the above errors will occur. They will all be recorded in the file you define as a system error log.

The above is all the content described in this article. I hope everyone can have a new understanding of PHP custom error logs.

For more articles on PHP custom error logs, please pay attention to the PHP Chinese website!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template