지식 창고

[C#] 로그 라이브러리(log4net) 본문

프로그래밍/WPF

[C#] 로그 라이브러리(log4net)

Lucky-John 2021. 8. 12. 10:39

https://nowonbun.tistory.com/567

 

[C#] 로그 라이브러리(log4net)

안녕하세요. 명월입니다. 이 글은 C#에서 사용하는 로그 라이브러리(log4net)에 대한 글입니다. 프로그램를 개발할 때는 보통 Visual studio등의 IDE 툴을 사용해서 디버깅등을 통해 프로그램의 흐름을

nowonbun.tistory.com

이 글은 C#에서 사용하는 로그 라이브러리(log4net)에 대한 글입니다.

 

프로그램를 개발할 때는 보통 Visual studio등의 IDE 툴을 사용해서 디버깅등을 통해 프로그램의 흐름을 알 수 있습니다. 그래서 개발 중에 에러가 발생하거나 잘못된 결과가 나올 때는 디버깅을 추적하여 값을 수정할 수 있습니다.

개발이 끝나고 Production에 컴파일 된 파일을 올려서 운영 중에 있을 때도 버그가 발생할 수 있습니다. 이 때는 웹서비스의 경우는 IIS를 일반 서비스 프로그램을 사용할 경우에는 IDE툴을 이용하는 것이 아니기 때문에 그 에러를 추적하기가 힘듭니다.

 

그래서 할 수 있는 방법중에 로그를 기록을 남겨서 프로그램의 흐름을 기록하는데요. 문제가 생겼을 때 그 로그를 추적해서 에러를 예측하거나 찾아낼 수 있습니다.

그 밖에도 로그를 통해서 유저의 행동 형식의 추적이나 습관, 학습등들의 통계자료로도 사용 가능합니다.

 

C#에서는 로그를 작성해 주는 라이브러리가 두개 존재합니다. 대표적으로 Elmah가 있고 Log4net이 있습니다. Elmah도 꽤 많은 서비스에서 사용하는 것 같습니다만 개인적으로 Log4net을 선호합니다.

이유는 Log4net은 일단 Log4j, Log4Php 등으로 다른 언어에서도 사용되는 라이브러리고 그렇게 호환성이 큰 라이브러리 만큼 커뮤니티도 커서 많은 정보를 쉽게 얻을 수 있기 때문에 선호합니다.

 

그럼 Log4net을 사용하기 위해서 Nuget을 이용해 Log4Net을 연결합니다.

 

위 패턴 레이아웃을 확인하면 패턴식이 따로 있는 것을 확인 할 수 있습니다.

사실 패턴 레이아웃식에 대해서 자세히 설명하고 싶기는 합니다만, 별로 크게 중요하지 않고 특별한 것 없으면 「%d [%t] %-5p %c - %m%n」 식이 무난합니다. 만약 더 자세한 내용을 넣고 싶으면 아래의 링크를 참조하세요.

링크 - https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

 

 

여기까지 왔으면 로그를 사용할 수 있는데, 이게 실제 Production에 릴리즈가 된다고 하면 데이터가 소스에 들어가 있어서 설정할 수 없습니다. 뭐 파라미터로 설정할 수 있기는 하지만 로그 파일 설정을 따로 빼야 할 때도 있습니다.

 

위에서 보면 xml 파일을 Fileinfo로 읽어 와서 XmlConfigurator.Configure를 사용하면 설정할 수 있습니다.

설정은 위 소스에서 만든 것과 같기 때문에 같은 결과가 나옵니다.

 

저는 ConsoleAppender와 RollingFileAppender만 사용했지만 제공하는 Appender가 굉장히 많습니다. (너무 많아서 다 설명할 수가 없네요.. 혹시 다른 Appender예제가 필요하시면 댓글 달아주세요...)

참조 - https://logging.apache.org/log4net/release/manual/introduction.html



Comments