[C#] log4net 사용법

 
제가 C#으로 프로그램을 만들때 주로 사용하는 log 라이브러리인 log4net 의 사용법을 소개합니다. log4net은 유명한 자바 log 라이브러리인 log4j의 .NET 버전이죠 사용하기도 편하고 기능이 강력해서 잘 사용하고 있습니다.

​무인으로 동작하는 프로그램을 개발하거나 사용자에게 에러메세지를 숨겨야 하는경우 log에 남겨 놓고 문제점을 확인할때 필수이죠.

​사용법

우선 https://logging.apache.org/log4net/
이곳에가서 다운로드 받아서 사용해도 되고 Nuget을 통해 설치한 후 사용할 수 있습니다.

​기본설정

Program.cs 에 추가할 내용
//using 추가
using log4net.Config;
//로그 설정파일 읽기
XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));

log4net.xml 설정내용

저는 주로 파일로 log를 만들고 실행폴더에 /log 폴더에
yyyy-MM-dd-ERROR.log 파일명으로 날짜별로 log를 만듭니다.


<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionpattern value="%d [%t] %-5p %c - %m%n"> </conversionpattern>
        </layout>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="./log/">
            <appendtofile value="true">
                <datepattern value="yyyy-MM-dd_ERROR.LOG">
                <rollingstyle value="Date">
                        <staticlogfilename value="false">
                            <layout type="log4net.Layout.PatternLayout">
                                <conversionpattern value="%d [%t] %-5p %c - %m%n">
                                </conversionpattern>
                            </layout> 
                        </staticlogfilename>
                    </rollingstyle>
                </datepattern>
            </appendtofile> 
        </file> 
    </appender>
    <root>
        <level value="DEBUG">
            <appender-ref ref="Console">
                <appender-ref ref="RollingFile">
                </appender-ref>
            </appender-ref>
        </level>
    </root>
</log4net>

사용할 Form 에서 소스코드에 다음을 선언한 후

protected static readonly ILog logger =
                 LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  
 
    try
{
}
catch (Exception ex)
{
// ERROR
logger.Error("에러위치 ERROR: " + ex.Message.ToString().Trim());
        // Debug
logger.Debug("디버그 값 표시");
// Info
logger.Info("정보 표시");
}


댓글

이 블로그의 인기 게시물

2025년 7월 다이어리

1. 대학교 축제 전시 프로젝트