이 Post 는 log4net 에서 사용할 수 없는 Debug 이하 레벨, trace 와 verbose 등을 사용하기 위한 방법을 설명 합니다.
log4net 의 일반적인 사용법은 이전 포스팅을 참조 하시면 됩니다.
설정 파일을 사용하는 법이나 동적으로 설정 하는 법, 둘 중 어느 쪽 에서나 시작 하실 수 있습니다.
이 글은 stack overflow 다음 글을 참조 합니다.
stack overflow 링크
1. trace 시도 – 확장 클래스 작성 전
Java 에서 Log4J 를 써보신 분들은 알겠지만 Debug 이해 단계에 로깅이 필요할 때가 종종 있습니다.
특정한 상황에서 상세 로그를 남긴다던가, 간혹가다 모든 데이터를 기록으로 남기고 싶다던가, 하는 경우 입니다.
이때 trace 나 verbose 를 종종 사용 하는데요, log4net 에서 시도하면 다음과 같은 상황이 발생합니다.

log4net 에서는 기본적으로 Debug 이해 단계에 로깅은 막혀있습니다.
1. ILogExtentions.cs: 확장 클래스 작성
internal static class ILogExtentions
{
internal static void Trace(this ILog log, string message, Exception exception)
{
log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
log4net.Core.Level.Trace, message, exception);
}
internal static void Trace(this ILog log, string message)
{
log.Trace(message, null);
}
internal static void Verbose(this ILog log, string message, Exception exception)
{
log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
log4net.Core.Level.Verbose, message, exception);
}
internal static void Verbose(this ILog log, string message)
{
log.Verbose(message, null);
}
}
2. trace 시도 – 확장 클래스 작성 후

3. 테스트 로깅
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
log.Verbose("MainWindow_Loaded Start");
try
{
log.Info("MainWindow_Loaded Do something");
}
catch(Exception ex)
{
log.Error(ex);
}
finally
{
log.Trace("MainWindow_Loaded Finally");
}
log.Verbose("MainWindow_Loaded End");
}
테스트를 위해 다음과 같이 로그를 남겨 보겠습니다.
Verbose, Info, Trace 가 쓰였습니다.
4. 로그 레벨 설정 – 동적 로깅의 경우
internal static class StLog
{
#if DEBUG
internal static readonly Level logLevel = Level.All;
#else
internal static readonly Level logLevel = Level.Info;
#endif
}
여기서는 All 로 설정 했습니다.
5. 로그 레벨 설정 – 설정 파일을 사용한 경우
<configuration>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="file"/>
</root>
</log4net>
</configuration>
마찬가지로 ALL 로 설정 했습니다.
6. 로그 확인 – 로그 레벨 ALL

모든 로그가 기록됨을 알 수 있습니다.
7. 로그 확인 – 로그 레벨 TRACE

Verbose 로그가 빠졌습니다.
ILogExtentions.cs 파일을 추가하여 Debug 이하 단계의 로그를 남기는 방법을 알아봤습니다.