2009-03-20 1 views
0

프로덕션 환경에서 로깅 예외 등에 대한 스택 추적 (파일 이름 및 줄 번호) 정보를 얻고 싶습니다. DLL은 GAC에 설치됩니다. 이 일을 할 수있는 방법이 있습니까?GAC를 사용할 때 프로덕션 로그인에 대한 스택 추적 정보를 얻는 방법

This article는 GAC에 PDB 파일을 퍼팅에 대해 말한다 : 그들은 당신이 GAC에 디버그 기호 (.pdb 인 파일)을 복사해야 말 때문에

쉽게이 자리 수 있습니다. 그 자체로는 작동하지 않습니다.

이 기사에서 VS로 디버깅하는 방법을 알고 있지만 stacktrace도 로깅하는 데 적용 할 수 있다고 생각합니다.

나는 대답에 대한 답변의 지시 사항을 따르지 만, 선택 사항이라고 말한 최적화 코드의 선택을 취소했습니다.

나는 GAC에 dll과 pdbs를 복사했지만 아직 스택 추적 정보를 얻지 못하고있다. 다음은 스택 추적을위한 로그 파일의 내용입니다.

OnAuthenticate at offset 161 in file:line:column <filename unknown>:0:0 
ValidateUser at offset 427 in file:line:column <filename unknown>:0:0 
LogException at offset 218 in file:line:column <filename unknown>:0:0 

저는 NLog를 사용하고 있습니다.

내 NLog 레이아웃은 다음과 같습니다

layout="${date:format=s}|${level}|${callsite}|${identity}|${message}|${stacktrace:format=Raw}" 

$ {스택 트레이스 : 형식 = 원시} 관련 부분이되고.

답변

1

는 소문자로 원시보십시오 :

${exception:format=stacktrace} 
+0

아니요 w orked 두 번째 방법은 메서드 이름의 더 멋진 레이아웃을 제공합니다. CalliHelper.EventArgFunctionCaller => MembershipLogin.Page_Load => MembershipLogin.Configure –

+0

줄 번호를 얻는 방법을 알고 있습니까? – Russell

+0

아마도 일관된 질문을해야합니까? –

0

이 시도 :

${stacktrace:format=raw} 

는 그 시도가 작동하지 않는 경우

StringWriter sw = new StringWriter(); 
new Throwable().printStackTrace(new PrintWriter(sw)); 
String stackTrace = sw.toString(); 

문자열 스택 트레이스가의 stackstrace이있을 것이다 현재 스레드

+0

감사합니다. NLog 소스를 변경하고 싶지는 않지만 고마워요. –

관련 문제