log4net의 설정방법은 매우 다양하고 많다.
이중 가장 기본적인 설정 방법을 설명한다. nuget을 이용하여 개발하는 경우가 있는데, 이는 개발자가 모두 인터넷에 잘 연결된 사용자들이나 쓰는 방법이고, Offline 환경에서는 잘 맞지 않는다. 특히나 공동 작업일 때는 package 폴더도 공유해야 하는데, 이게 사이즈가…
여기서는 Assembly DLL 만 연결하는 방법으로 소개한다.
Assembly 폴더 만들고 log4net.dll 복사하기.
제일 먼저 하는 것은 Solution 폴더 위치에 Assembly라는 폴더를 만든다. 보통 Visual Studio를 써서 프로젝트를 만들면 Solution 폴더 하위에 Project 폴더들이 박히는데, 여러 개의 Project를 만든 후 모든 Project들이 log4net을 쓴다면, 이 방법이 제일 좋은 것 같다.
그 안에 log4net.dll 을 복사해서 넣는다.
Project 내 참조 추가.
Project 폴더 내에 있는 참조 위에서 참조추가를 시도한다.
참조 폴더에서 위에 넣었던 파일을 Browse로 찾아서 넣도록 한다. 만일 캐쉬로 있다고 해도 다른 위치의 파일일 수 있으니 반드시 직접 Browse 해서 찾아서 넣도록 한다. 그 이유는 여러개의 프로젝트 작업을 수행한 경우 파일 이름은 같을지 몰라도 전혀 다른 프로젝트의 DLL을 참조할 수 있다.
AssemblyInfo.cs 수정
Properties 폴더 안에 AssemblyInfo.cs 파일이 있는데 이 파일을 연다.
그 안에 여러가지 내용이 있지만, 맨 밑에다가 다음 한 줄을 추가한다.
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
app.config 설정
이 부분은 내용이 참 많은데, 자세한 설명없이 단순하게 추가할 내용만 정리한다.
먼저 XML의 configuration 엘리멘트 안에 다음과 같은 섹션을 추가한다. 이전에 이미 만들어 넣었다면, section만 추가할 수도 있다. 이 항목이 들어가야 log4net 이라는 엘리멘트를 만들어 넣을 수 있다.
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
section을 추가했다면 이제 아래 쪽에(보통은 appSettings 밑) 다음과 같은 항목을 추가한다.
<log4net>
<appender name="Appender" type="log4net.Appender.RollingFileAppender">
<file value="service.log"/>
<rollingStyle value="Date"/>
<datePattern value="_yyyyMMdd'.log'"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="Appender"/>
</root>
</log4net>
위와 같이 설정할 때, Appender 쪽만 잘 잡아주면 되는데, 파일 저장 위치나, 로그가 쌓일 때 텍스트 형식등을 정의할 수 있다. file과 conversionPatten 이라는 엘리멘트를 수정하면 된다.
log 개체 소스에 박기
실제 로그를 쌓기 위해 소스에 박기전에 각 소스 클래스 내 로그 관련 인스턴스를 생성한다. 그렇다고 매번 클래스 만들어질 때마다 만들 수 없으므로 1회안에 활성화 될 수 있도록 static 으로 구성한다.
모든 클래스 최 상단에 다음과 같은 코드를 담도록 한다.
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
위와 같이 넣으면 코드안에서 다음과 같이 코드를 작성할 수 있다.
log.Error("Service started");
정리하며
매번 코드 내에 적용하면서 다른 프로젝트 내의 코드를 복사해서 처리하는 것만 했지 별도로 정리한적이 없어서 정리해봤다.
나중에, 설정 관련된 특이하게 응용했던 것들도 정리해보려고 한다.
2020. 3. 11. 오전 9:41