C# WPF log4net – trace, verbose 레벨 사용

이 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 이하 단계의 로그를 남기는 방법을 알아봤습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤