현재 위치: > 최신 기사 목록> gettraceasstring을 사용하여 PHP에서 사용자 정의 로깅 기능을 만드는 방법

gettraceasstring을 사용하여 PHP에서 사용자 정의 로깅 기능을 만드는 방법

gitbox 2025-06-03

PHP 개발에서 오류 로깅은 프로그램 안정성을 보장하고 문제를 해결하는 데 중요한 수단입니다. PHP에는 ERRER_LOGSET_ERROR_HANDLER 와 같은 메커니즘이 제공되지만, 특히 추적 정보를 스택 트레이스 정보와 관련하여 오류 메시지의 출력 형식을 사용자 정의 할 수 있기를 원합니다. 예외 클래스의 gettraceasstring () 메소드는이 목표를 달성하는 데 도움이 될 수 있습니다.

gettraceasstring이란 무엇입니까?

getTraceAsString () 은 PHP의 예외 클래스의 메소드이며, 예외의 스택 추적 정보의 문자열 표현을 반환하는 데 사용됩니다. 이 문자열에는 함수 호출 순서, 파일 이름 및 해당 줄 번호가 포함되어 있으며 로깅에 매우 적합합니다.

예제 출력은 다음과 같습니다.

 #0 /var/www/html/index.php(10): someFunction()
#1 {main}

사용자 정의 오류 로깅의 기본 구조

예외 ( 시도 ... 캐치 )를 잡고 getTraceAsString ()을 호출하여 오류 메시지를 포맷하고 로그 파일에 쓸 수 있습니다. 다음은 전체 예입니다.

<code> & lt;? php

함수 logerrortofile (예외 $ e) {
$ logfile = dir . '/error.log';
$ logmessage = "[". 날짜 ( 'ymd h : i : s'). "]";
$ logmessage. = "오류 :". $ e-> getMessage (). php_eol;
$ logmessage. = "파일 :". $ e-> getFile (). "온라인". $ e-> getline (). php_eol;
$ logmessage. = "스택 추적 :". php_eol. $ e-> getTraceAsString (). php_eol;
$ logmessage. = str_repeat ( "-", 80). php_eol;

 file_put_contents($logFile, $logMessage, FILE_APPEND);

}

함수 분할 ($ a, $ b) {
if ($ b === 0) {
새로운 예외를 던지십시오 ( "제수는 0이 될 수 없습니다");
}
$ a / $ b를 반환합니다.
}

노력하다 {
$ result = divide (10, 0);
} catch (예외 $ e) {
LogerRortofile ($ e);
Echo "오류가 발생했습니다. 로그 파일을보십시오." . php_eol;
}
</코드>

원격 오류 로그 로그를 기록합니다

때로는 통합 관리를 위해 원격 서버에 오류 로그를 보내려고합니다. 이 경우 file_get_contents 또는 curl을 사용하여 로그 정보를 원격 인터페이스로 푸시 할 수 있습니다.

<code> 함수 senderRortoremote (예외 $ e) {$ log = [ 'time'= & gt; 날짜 ( 'ymd h : i : s'), 'message'= & gt; $ e- & gt; getMessage (), 'file'= & gt; $ e- & gt; getFile (), 'line'= & gt; $ e- & gt; getline (), 'trace'= & gt; $ e- & gt; gettraceasstring ()];
 $json = json_encode($log);

$ch = curl_init('https://gitbox.net/api/error-report');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

}
</코드>

실용적인 제안

  1. 로그 회전 : 로그 파일이 무한히 증가하지 않도록하십시오. Logrotate 도구를 결합하거나 PHP에서 파일 크기 확인을 설정할 수 있습니다.

  2. 오류 수준 차이 : 다른 심각도 수준의 로그는 예외 유형 또는 사용자 정의 레벨에 따라 기록됩니다.

  3. 보안 : 데이터베이스 암호 또는 사용자 개인 정보 보호 데이터와 같은 민감한 정보를 기록하지 마십시오.

요약

getTraceAsString ()을 사용하여 예외 호출 스택 정보를 읽을 수있는 문자열로 빠르게 변환하면 사용자 지정 로깅 기능과 함께 유연한 오류 로깅 메커니즘을 구현할 수 있습니다. 이것은 로컬 디버깅을 용이하게 할뿐만 아니라 원격 모니터링 및 경보의 요구를 충족시킵니다. PHP가 제공하는 예외 처리 메커니즘의 유연한 사용은 프로젝트의 안정성을 호출합니다.