일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- chashtag
- csharp
- commit
- Binding
- tls
- IValueConverter
- dotNET
- mysql
- git
- .net
- File
- windows
- WPF
- coding-test
- Github
- string
- logging
- Process
- nullable
- convert
- 코딩테스트
- Microsoft
- C#
- Coding
- windows10
- programmers
- log
- algorithm
- ListView
- Visual Studio
Archives
- Today
- Total
CHashtag
[C#] [log4net] config파일없이 log사용하기 본문
반응형
안녕하세요.
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;
}
도움이 되었길 바랍니다.
감사합니다.
반응형