log4net은 c#을 이용한 어플리케이션 개발시 로그 기능을 쉽게 추가할 수 있는 라이브러리입니다.
기본적인 라이센스는 Apache License를 따르고 있습니다.
원래 log4j라고 하는 자바 기반의 로그 라이브러리였으나
닷넷프레임워크용으로 포팅이 되면서 log4net 이라고 명명이 되었습니다.
Apache log4net – Download Apache log4net - Apache log4net
다운로드 사이트에서 Binaries를 다운받으면 되며,
제가 설명드리는 log4net 사용법에서는 log4net.dll 파일만 있으면 됩니다.
(설정파일을 사용하지 않습니다.)
각자 컴파일 환경에 맞는 바이너리 파일을 사용하시면 됩니다.
프로젝트의 참조에 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);
♡ 여러분의 공감이 빅에너지에게 에너지원입니다. 공감, 좋아요 부탁합니다~ ♡
댓글