본문으로 바로가기

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

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


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

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


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);




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아 주세요

  1. piro 2017.08.11 13:54 신고

    찾고있었는데, 정말 도움 많이 되었습니다.
    감사합니다

티스토리 툴바