현재 위치: > 최신 기사 목록> getTraceAsString 함수를 사용하여보다 자세하고 맞춤형 오류 보고서를 생성하여 빠른 찾기 문제를 촉진하는 방법

getTraceAsString 함수를 사용하여보다 자세하고 맞춤형 오류 보고서를 생성하여 빠른 찾기 문제를 촉진하는 방법

M66 2025-06-15

매일 PHP 개발에서 우리는 종종 프로그램에서 예외를 만듭니다. 문제를 신속하게 찾으려면 PHP는 예외 클래스의 매우 실용적인 방법 인 gettraceasstring ()을 제공합니다. 스택 추적 정보를 문자열 출력으로 형식화하여 개발자가 오류가 발생하는 위치와 통화 체인을 빠르게 이해할 수 있도록 도와줍니다.

기본 사용

예외가 잡히면 gettraceasstring ()을 직접 사용하여 스택 정보를 얻을 수 있습니다.

<code> try {// 예외를 시뮬레이션하여 새로운 예외를 던지십시오 ( "테스트 오류"); } catch (예외 $ e) {echo $ e-> gettraceasstring (); } </code>

출력은 다음과 유사합니다.

 #0 /var/www/html/test.php(3): throw new Exception('테스트 오류')
#1 {main}

이것은 이미 기본 정보를 제공하지만 실제 응용 프로그램에서는 더 많은 컨텍스트를보고, 현재 로그인 한 사용자, 요청 된 URL, 매개 변수 등과 같은 사용자 지정 필드를 추가하여 문제를 더 빨리 찾을 수 있습니다.

사용자 정의 오류 보고서 템플릿

보다 자세한 오류 보고서를 생성하기 위해 오류 처리 기능을 캡슐화하고 GetTraceAsString () 의 정보를 다른 진단 정보와 통합 할 수 있습니다. 예를 들어:

<code> 함수 logexceptionDetailed (예외 $ e) {$ log = []; $ log [] = "시간 :". 날짜 ( 'ymd h : i : s'); $ log [] = "오류 메시지 :". $ e-> getMessage (); $ log [] = "파일 :". $ e-> getFile (). ". JSON_UNESCAPED_UNICODE);
 file_put_contents(__DIR__ . '/error.log', implode("\n", $log) . "\n\n", FILE_APPEND);

}
</코드>

프로그램에서 사용 :

<code> try {// 오류가있을 수있는 someriskyFunction ()이 여기에서 실행된다고 가정하십시오. } catch (예외 $ e) {logexceptionDetailed ($ e); Echo "시스템 오류가 발생했습니다. 나중에 다시 시도하십시오."; } </code>

이런 식으로, 우리는 오류 컨텍스트를 기록하고 통화 스택을 그대로 유지하여 생산 환경에서도 문제를 더 잘 재현하고 분석 할 수 있습니다.

이메일 알람 또는 원격 알림과 결합합니다

중요한 시스템에서 오류가 발생한 후 로그를 기록해야 할뿐만 아니라 개발자에게 실시간으로 알려야 할 수도 있습니다. 위의 LogExceptionDetailed 함수를 확장하거나 이메일을 보내거나 원격 인터페이스를 호출 할 수 있습니다 (예 : Enterprise WeChat, Dingtalk 또는 자체 알림 시스템).

<code> 함수 notifydevteam ($ message) {$ url = "https://api.m66.net/notify"; // 샘플 인터페이스 $ data = [ 'msg'=> $ message];
 $opts = [
    "http" => [
        "method" => "POST",
        "header" => "Content-Type: application/json",
        "content" => json_encode($data)
    ]
];
file_get_contents($url, false, stream_context_create($opts));

}
</코드>

로깅 후 추가 :

<code> notifydevteam (implode ( "\ n", $ log)); </코드>

요약

getTraceAsString ()을 사용하면 예외의 통화 스택 정보를 얻을 수 있습니다. 이는 디버깅에 매우 도움이됩니다. 컨텍스트 정보, 사용자 정의 형식, 로깅 및 알림 메커니즘을 결합하면 완전한 오류보고 시스템을 구축 할 수 있습니다. 이것은 무언가 잘못 될 때 가능한 빨리 문제를 알 수있을뿐만 아니라 검사 효율을 크게 향상시킵니다. 모든 PHP 프로젝트에 추가 해야하는 기능입니다.