2013-09-06 3 views
2

log4net의 조언 given here을 따랐습니다. 그럼 내가 단위 테스트는이 두 줄을 실행하면 Visual Studio 2010에서 Visual Studio 2010에서 'F5'를 쳐서 MSTEST 단위 테스트를 실행하고 있습니다 ".이"Visual Studio에서 OutputDebugStringAppender가 작동하지 않습니다.

log.Warn("hello"); //this is a log4net logger. 
System.Diagnostics.Debug.Write("there"); 

... Visual Studio 출력 창은 단어를 보여줍니다 "안녕하세요"가 출력되지 않는 이유는 무엇입니까?

나는 '로그'변수 오버 호버 디버깅

, 그것은 나에게 보여줍니다이에서

IsDebugEnabled = false 
IsErrorEnabled = true 
IsFatalEnabled = true 
IsInfoEnabled = false 
IsWarnEnabled = true 

내가 구성 파일이 제대로 읽고있는 것으로 결론 지었다. 내 log4net 구성은 다음과 같다 : 내가 추가 FileAppender를 추가 할 때, 그것은 생성 파일이 실제로 거기에 "안녕하세요"라는 메시지가 않습니다

<log4net> 
<appender name="A1" type="log4net.Appender.OutputDebugStringAppender"> 

    <!-- A1 uses PatternLayout --> 
    <layout type="log4net.Layout.PatternLayout"> 
    <!--<conversionPattern value="%-4r [%t] %-5p %c %x - %m%n" />--> 
    <conversionPattern value="[MySite] %level %date{HH:mm:ss,fff} - %message%n" />   
    </layout> 
</appender> 

<root> 
    <level value="WARN" /> 
    <appender-ref ref="A1" /> 
</root> 
</log4net> 

. VS 디버그 출력 창이 "안녕하세요"를 표시하지 않는 단서가 있습니까?

답변

5

OutputDebugStringAppender가 아닌DebugAppender를 사용해보십시오.

DebugAppenderSystem.Diagnostics.Debug.Write에 대한 호출로 끝나고 OutputDebugStringAppender는 비 관리 코드를 호출하며 Visual Studio에서는 캡처하지 않습니다. (적어도 기본적으로는 아니지만 디버깅 할 때만 가능합니다. 즉, 사용자의 경우에는 작동하지 않습니다.) .

DebugAppender의 출력은 연결된 문서에서 언급 한 DebugView를 사용하여 캡처 할 수 있으므로 OutputDebugStringAppender를 사용하는 이유를 생각할 수 없습니다.

+1

AARRGGHHH !! 너무 가까이서, 그러나 멀리! DebugAppender가 작동하고 완벽한 솔루션이 될 것입니다. 단, 모든 로그 항목 앞에 로거 이름이 붙어야한다는 점이 다릅니다. DebugAppender에서 설정할 수있는 속성이 없으면 설정하지 않기를 요청합니다. –

+1

@MickyD 지금 수정되었습니다. – sgmoore

+0

Splendid. 고마워요, 선생님 :) +1 – MickyD

관련 문제