CHashtag

[C#] [log4net] config파일없이 log사용하기 본문

카테고리 없음

[C#] [log4net] config파일없이 log사용하기

HyoSeong 2022. 1. 20. 20:55
반응형

안녕하세요.

 

C#에서 Logging을 구현할 때 대부분 라이브러리를 사용하여 구현합니다.

저는 그중에서도 많이 쓰이는 라이브러리인 log4net을 주로 사용하는데,

log4net은 config을 참조하여 logging에 관한 정보를 얻습니다.

 

log를 저장할 경로이나, logging level, 한 파일 크기, pattern등을 말이죠.

 

그러나 어떠한 이유로 config를 만들 수 없는 상황이 간혹 오는데요,

예를들면, 하나의 exe로 packaging을 해야 한다거나,,

 

그럴 때 유용하여 사용할 수 있는 방법에 대해 알려드리고자 합니다.

 

방법은 간단한데요,

 

아래 코드는 log4net.config를 c#코드로 구현한 것입니다.

해당 코드를 프로그램 시작점에서 실행시켜 주시면 log4net.config를 사용하던 것처럼 동일한 효과를 얻을 수 있는 것이죠.

 

당연히 사용자 기호에 맞게 설정값들은 적절히 수정하여 사용하시면 되겠습니다.

 

public void SetLogger(string logFilePath)
{
    Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

    PatternLayout patternLayout = new PatternLayout();
    patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
    patternLayout.ActivateOptions();

    RollingFileAppender roller = new RollingFileAppender();
    roller.AppendToFile = true;
    roller.File = logFilePath;
    roller.Layout = patternLayout;
    roller.MaxSizeRollBackups = 5;
    roller.MaximumFileSize = "1GB";
    roller.RollingStyle = RollingFileAppender.RollingMode.Size;
    roller.StaticLogFileName = true;
    roller.ActivateOptions();
    hierarchy.Root.AddAppender(roller);

    MemoryAppender memory = new MemoryAppender();
    memory.ActivateOptions();
    hierarchy.Root.AddAppender(memory);
    hierarchy.Configured = true;
}

 

 

도움이 되었길 바랍니다.

 

감사합니다.

반응형