2012-11-12 3 views
7

.NET Framework의 많은 클래스 (특히 소켓/네트워크 클래스)는 System.Net.GlobalLog (내부 클래스)를 사용하여 어딘가에 추적 메시지를 기록합니다. 당신은 예는 SslState 클래스에 GlobalLog.Assert 및 GlobalLog.Print 같은 것들을 사용하여 볼 수 있습니다System.Net.GlobalLog -이 출력을 보려면 어떻게해야합니까?

SslStream source code

이것은 System.Net.Logging (또한 내부) 클래스는 다른, 사용하는 또한 수의 소켓/네트워크 클래스 전체에서 찾을 수 있습니다.

System.Net.Logging의 경우 App.Config에서 <system.diagnostics> 구성 블록을 사용할 수 있음을 알고 올바르게 구성된 경우 System.Net.Logging 메시지가 기록됩니다. 그러나 이것은 System.Net.GlobalLog에 영향을 미치지 않는 것으로 보입니다.

약 1 시간 동안 검색 한 후 System.Net.GlobalLog의 출력 위치를 찾지 못했습니다. 누구든지이 출력을 찾고 /보고/제어하는 ​​방법을 알고 있습니까?

답변

2

명시된대로 GlobalLog는 System.Net 어셈블리의 내부 클래스입니다. System.Net 어셈블리를 수정할 수 없으면 해당 클래스에 액세스 할 수 없습니다.

다음 검토 할 수 있습니다, 말했다 : http://www.123aspx.com/rotor/RotorSrc.aspx?rot=42941

당신이 작동하도록하기 위해 컴파일러 플래그 TRAVEDEBUG 세트가해야 할 것은 .. 보이지만이 곳을 확인할 수 없습니다 실제로 기록 된 정보로 무엇이든합니다. 이 주석은 환경 변수 설정을 찾고 시스템의 어딘가에있는 텍스트 파일에 로그를 덤프한다고 가정합니다. 해당 페이지의 코드가 불완전하거나 단순히 완료되지 않은 것 같습니다.

내 생각에 원하는 로깅 정보에 액세스하는 다른 방법을 찾아야합니다.

+3

다음과 같이 요약하면 디버그/트래브 컴파일 버전의 System.dll 라이브러리가 없어도 해당 정보를 얻지 못했습니다. 또한 Visual Studio에서 이러한 클래스의 소스 코드를 단계별로 실행할 수 없기 때문에 현실적으로 디버깅 할 수 없습니다. 당신의 대답이 내 문제를 해결하지 못했지만 올바른 대답이었습니다. 내 문제의 궁극적 인 해결책은 "SslStream을 버리고 BouncyCastle의 TLS 구현과 함께합니다." 이미 인증서 생성을 위해이 라이브러리를 사용하고 있었기 때문에 프로젝트에 추가 의존성이 추가되지 않았습니다. –

+0

또한 System.Net.Logging은 내부 클래스이기도하지만 해당 클래스의 출력을 보거나 지시하는 문서화 된 방법이 있습니다. 그냥 GlobalLog가 아니야. 흥미 롭 군. –

0

기존 답변에 대한 의견으로 충분한 담당자가 없지만 TcpClient 및 Socket 클래스에서 무슨 일이 일어나고 있는지 파악하고 싶었지만 침입 할 수 없음을 발견했습니다. 내가 얻은 가장 가까운 것은 만들어지는 Windows API 호출을 모니터링하는 것이 었습니다. API 모니터라는 프리웨어 도구 (여기서는 http://www.rohitab.com/apimonitor)를 사용했습니다.

관련 문제