IT정보공유/C#

[ C# ] 로그 라이브러리, xml 설정 없는 log4net library 사용 방법

알지오™ 2017. 2. 3.

log4net은 c#을 이용한 어플리케이션 개발시 로그 기능을 쉽게 추가할 수 있는 라이브러리입니다.

기본적인 라이센스는 Apache License를 따르고 있습니다.

 

원래 log4j라고 하는 자바 기반의 로그 라이브러리였으나

닷넷프레임워크용으로 포팅이 되면서 log4net 이라고 명명이 되었습니다.

 

log4net 다운로드

 

Apache log4net – Download Apache log4net - Apache log4net

 

[ C# ] 로그 라이브러리, xml 설정 없는 log4net library 사용 방법

 

다운로드 사이트에서 Binaries를 다운받으면 되며, 

제가 설명드리는 log4net 사용법에서는 log4net.dll 파일만 있으면 됩니다.

(설정파일을 사용하지 않습니다.)

 

각자 컴파일 환경에 맞는 바이너리 파일을 사용하시면 됩니다.

 

[ C# ] 로그 라이브러리, xml 설정 없는 log4net library 사용 방법

 

프로젝트의 참조에 log4net.dll 을 추가시켜줍니다.

 

.

 

 

 

//  

using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;


    public class L4Logger
    {
        private static L4Logger LoggerInstance;

        public ILog log;
        public RollingFileAppender rollingAppender;
        public PatternLayout layout;
        public log4net.Filter.LoggerMatchFilter lmf;

        public static L4Logger GetInstance()
        {
            if (LoggerInstance == null)
            {
                LoggerInstance = new L4Logger();
            }

            return LoggerInstance;            
        }


        public L4Logger()
        {
            string FilePath = AppDomain.CurrentDomain.BaseDirectory + "\\Log\\App.log"; //실행폴더 아래에 Log폴더

            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
            hierarchy.Configured = true;

            RollingFileAppender rollingAppender = new RollingFileAppender();
            rollingAppender.Name = "logger";
            rollingAppender.File = FilePath; // 로그 파일 이름
            rollingAppender.AppendToFile = true;

            rollingAppender.StaticLogFileName = true;
            rollingAppender.CountDirection = 1;
            rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Date;
            rollingAppender.LockingModel = new FileAppender.MinimalLock();
            rollingAppender.DatePattern = "_yyyyMMdd\".log\""; // 날짜가 변경되면 이전 로그에 붙은 이름

            PatternLayout layout = new PatternLayout("%date [%-5level] %message%newline");//로그 출력 포맷

            rollingAppender.Layout = layout;            

            hierarchy.Root.AddAppender(rollingAppender);
            rollingAppender.ActivateOptions(); ;
            hierarchy.Root.Level = log4net.Core.Level.All;

            log = LogManager.GetLogger("logger");
            Logger l = (Logger)log.Logger;
        }

        public void Add(string LogMsg)
        {
            log.Debug(LogMsg);
        }

        public void Close()
        {
            LogManager.Shutdown();
        }
    }
    
    //

 

실제 프로젝트에 사용하려고 만든 로그 클래스입니다.

싱글톤 패턴을 이용해서 어디서나 하나의 인스턴스에 접근이 가능하도록 만들었습니다.

 

L4Logger() 생성자에 구현되어 있는 코드들이 xml configuration 을 대신하는 

동적 코드라, xml은 별도로 필요하지 않습니다.

 

로그의 종류를 5가지로 찍을 수 있는데, 제가 만든 소스에서는 그냥 Debug 하나만 사용하고 있으니,

필요에 따라 함수를 추가적으로 만들어서 사용하셔도 됩니다.

 

로그 종류

 

 

- log.Debug(LogMsg);

- log.Error(LogMsg);

 

 

- log.Fatal(LogMsg);

 

 

- log.Info(LogMsg);

 

 

- log.Warn(LogMsg);

 

♡ 여러분의 공감이 빅에너지에게 에너지원입니다. 공감, 좋아요 부탁합니다~ 

 

 

 

 

 

 

 

댓글

💲 추천 글