>  기사  >  백엔드 개발  >  PHP 사용자 정의 오류 로그에 대한 간략한 토론

PHP 사용자 정의 오류 로그에 대한 간략한 토론

高洛峰
高洛峰원래의
2016-12-23 15:41:431208검색

두 가지 이유가 있다고 생각합니다.

1. 팀에서 관리하기 쉽도록 통일된 로그 형식이 필요합니다

2. 쓸데없는 오류 로그가 많아 하드 디스크 공간을 차지합니다. 의미 있는 로그만 기록하면 됩니다.

그럼 연습해 보세요.

1. php.ini를 엽니다

2. 로깅을 켜고

log_errors = Off

log_errors = On

으로 변경합니다. 3. Save php를 변경합니다. .ini, 웹 서버 종료 후 다시 시작

4. 코드 앞에 다음 코드를 추가합니다

<?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");//开启自定义错误日志

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=path 이름도 지정) error_reporting을 모두 활성화하면 위의 내용이 나타납니다. 오류는 시스템 오류 로그로 정의한 파일에 기록됩니다.

위 내용은 이 글에 설명된 내용의 전부입니다. PHP 사용자 정의 오류 로그에 대해 모두가 새로운 이해를 가질 수 있기를 바랍니다.

PHP 사용자 정의 오류 로그에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.