>  기사  >  백엔드 개발  >  PHP 사용자 정의 오류 로그란 무엇입니까? 오류 로그 예제 코드에 대한 자세한 설명

PHP 사용자 정의 오류 로그란 무엇입니까? 오류 로그 예제 코드에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-17 16:58:471786검색

정의된 오류 로그를 프로젝트에서 적시에 처리해야 하는 경우 사용자 정의 오류 로그의 출력 방법을 수정해야 합니다(로그 작성, 이메일 보내기, 문자 메시지 보내기)

1. Register_shutdown_function(array('phperror','shutdown_function ')); //PHP 프로그램 실행 후 실행할 함수를 정의합니다. 해당 함수는 프로그램 실행이 완료된 후 실행될 수 있습니다. 프로그램 실행이 완료된 후 후속 작업. 프로그램이 실행 중일 때 실행 시간 초과나 강제 종료가 발생할 수 있지만, 이 경우 기본 프롬프트는 매우 불친절합니다. 동시에 임시 파일 등을 포함하여 실행 완료 후 임시 데이터 정리와 같은 일부 기능의 후속 작업을 구현할 수 있습니다.


다음과 같이 호출 조건을 이해할 수 있습니다:


  1. 사용자에 의해 페이지가 강제로 중지되었을 때

  2. 프로그램 코드의 시간이 초과되었을 때

  3. PHP 코드 실행이 완료되면 2. set_error_handler(array('phperror','error_handler')) //사용자 정의 오류 처리 함수 설정

  을 통해 사용자 정의 오류 핸들러를 설정합니다. set_error_handler() 함수를 사용한 다음 오류를 트리거합니다(trigger_error()를 통해):

3. set_Exception_handler(array('phperror','appException')) //맞춤형 예외 처리

로그를 작성하기 전에 우리는 스스로에게 묻습니다. : 때때로 사용자 정의 로그를 기록해야 하는 이유는 무엇입니까? 시스템의 기본 로깅 방법을 사용하는 대신?

1. 간편한 관리를 위해 통일된 로그 형식이 필요합니다2. 쓸모없는 오류 로그가 많아 하드 디스크 공간을 차지하고 의미 있는 로그만 기록하면 됩니다.

그럼 연습해 보세요.

1. php.ini

를 열고

log_errors = Off

log_errors = On

로 변경합니다. 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)을 활성화하고 시스템 로그 파일(또한 error_log = php.ini의 경로 이름)을 지정하고 error_reporting을 활성화하면 위의 오류가 발생합니다. 이는 모두 시스템 오류 로그로 정의한 파일에 기록됩니다.

위 내용은 PHP 사용자 정의 오류 로그란 무엇입니까? 오류 로그 예제 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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