php 사용자 정의 오류 로그
로 그 를 쓰기 전에,우 리 는 왜 때때로 사용자 정의 로 그 를 기록 해 야 하 는 지 스스로 에 게 물 었 다.시스템 의 기본 로그 기록 방식 을 사용 하지 않 습 니까?
나 는 두 가지 이유 가 있다 고 생각한다.
1.팀 은 통 일 된 형식의 로그 관리 가 필요 합 니 다.
2.대량의 쓸모없는 오류 로그 가 하 드 디스크 공간 을 차지 하고 의미 있 는 로 그 를 기록 해 야 합 니 다.
그럼 실천 해 보 세 요.
1.php.ini 열기
2.로그 기록 열기
log_errors = Off
...로 바꾸다
log_errors = On
3.php.ini 저장 종료 및 웹 서버 다시 시작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
";
$log_file = sprintf($log_file,'error');
exit(1);//
break;
case E_USER_WARNING:
$template .= " WARNING , [$errno] $errstr ";
$template .= " $errfile, $errline
";
$log_file = sprintf($log_file,'warning');
break;
case E_USER_NOTICE:
$template .= " NOTICE , , [$errno] $errstr ";
$template .= " $errfile, $errline
";
$log_file = sprintf($log_file,'notice');
break;
default:
$template .= " : [$errno] $errstr ";
$template .= " $errfile, $errline
";
$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;
정 의 된 경로 에 로그 파일 이 하나 더 있 는 지 확인 하 시 겠 습 니까?:)
주:다음 단계 의 오 류 는 사용자 가 정의 한 함수 로 처리 할 수 없습니다:EERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,그리고 set 호출 중error_handler()함수 가 있 는 파일 에서 발생 하 는 대부분의 ESTRICT。
하지만 오류 로그 시스템 을 열 었 을 때(pp.ini 의 logerror=on)시스템 로그 파일 을 지정 하 였 습 니 다.log=경로 명),그리고 errorreporting 이 모든 것 을 열 면 이상 의 오 류 는 시스템 오류 로그 로 정 의 된 파일 에 기 록 됩 니 다.
이상 은 본 논문 에서 말 한 모든 내용 입 니 다.phop 사용자 정의 오류 로그 에 대해 새로운 인식 을 가지 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.