Log4Net 사용 방법 - 파일편
1. Log4Net dll 다운받기
다운받을 수 있는 아래 그림으로 이동할 수 있는 URL : https://logging.apache.org/log4net/download_log4net.cgi
가급적이면 newKey로 다운받아달라고 써있다. newKey의 zip으로 다운받자.
위의 파일을 다운로드 받아서 압축을 풀고, 아래의 경로로 가서 보면 다음과 같이 여러 버전의 dll 파일이 있다. 원하는 파일을 복사해서 참조하기 쉬운 위치로 가져다 놓자.
나의 경우는, .net 의 4.0 버전을 쓰기 위해서 다음과 같은 경로로 접근하였으며, 해당 파일을 내가 쓰려는 프로젝트 폴더에 옮겨두었다.
종류 확인을 위해 찍었다.
2. 참조 추가
해당 프로젝트의 참조 오른쪽 버튼 클릭 > 참조 추가
찾아보기를 클릭하여 log4net.dll 을 참조한다.
참조에 log4net이 생성된것을 확인할 수 있다.
3. App.config 에 명령어 추가
꼭 App.cofig 파일에 명령어를 추가해야되는 의무는 없다. 새로 xml파일을 만들어 명령어를 주어도 된다. 하지만 설정 관련 부분에서 App.config 파일에서 설정하는 모든 설정은 생성한 명령어가 있는 xml 파일에 적용해줘야 한다. (경로지정 및 속성 지정 등)
위의 명령어 텍스트:
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 31 32 33 | <?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <!-- 파일 appender--> <log4net> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> <file value=".\TestLog.log"/> <appendToFile value="true"/> <datePattern value="-yyyy-MM-dd"/> <rollingStyle value="Date"/> <maxSizeRollBackups value ="10"/> <maximumFileSize value ="10MB"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d [%t] %-5p %c - %m%n"/> </layout> </appender> <root> <level value="DEBUG"/> <appender-ref ref="RollingFile"/> </root> </log4net> <connectionStrings> <add name="vtsprogram.Properties.Settings.testConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\test.MDB" providerName="System.Data.OleDb"/> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration> | cs |
속성 설명:
file: 파일명 및 경로
datePattern: 날짜 작성 방식
maxSizeRollBackups: 백업 파일 개수 제한 (맥스 파일 갯수가 넘어가면 전의 파일이 삭제됨)
maximumFileSize : 백업 파일의 크기 제한
layout의 conversionPattern:
로그에 쓰이는 문구 셋팅
root의 level:
value값 이상의 로그 레벨을 씀
root의 appender-ref
ref=”해당값”: 해당값의 appender name을
찾아 실행함. 속성을 설정한 appender의 이름과 반드시
동일해야 한다.
4. App.config 파일에 속성 변경
App.config 파일 속성 > 출력 디렉토리로 복사 > 항상 복사 로 설정
만약, App.config 파일이 아닌 다른 파일에 명령어를 입력했다면, 그 명령어를 입력한 파일의 속성을 변경해야 한다.
5. 사용할 클래스에서 Log4Net 라이브러리 연결 및 설정방법
using 을 이용하여 log4Net을 연결한다.
두번째 빨간박스인 assembly는 맨 처음 프로그램을 시작할때 딱 한번만 실행해 주면 된다.
xmlConfigurator을 이용하여 명령어를 추가한 파일을 연결해준다. (본 예제에서는 App.config 파일이지만, 다른 파일에 명령어를 입력했다면, 입력한 파일을 연결해야 한다.)
ILog 인터페이스를 이용하여 로그 인스턴스를 호출하고 사용한다.
예제 텍스트 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using log4net; using log4net.Config; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace vtsprogram { public partial class MainWindow : Window { public MainWindow() { XmlConfigurator.Configure(new System.IO.FileInfo("App.config")); InitializeComponent(); ILog log = LogManager.GetLogger(typeof(MainWindow)); //LogTest(); log.Debug("LogTest() started"); log.Info("My Info"); log.Warn("My Warning"); log.Error("My Error"); log.Fatal("My Fatal Error"); } | cs |
여기까지 완료하면, App.config 파일에서 설정해주었던 경로로 파일이 떨궈지고,
App.config 에 작성한 명령어 중 conversionPattern 에서 정의했던 대로 문자열이 파일에 작성된다.
다음은 로그 파일을 읽어오는 방법이다.
로그 파일을 읽어올 때에는 텍스트 파일을 읽어오는 방법으로 하면 될 것 같다.
conversionPattern 에 문자열을 정의할 때, 나만의 구분자를 주어서, 나중에 로그를 읽을 때 구분자를 이용하여 문자열을 자르는 방법으로 정리해도 괜찮을 것 같다.
6. 로그 읽기
예제 소스 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void LogRead() { int counter = 0; string line; // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader(@".\TestLog.log"); while ((line = file.ReadLine()) != null) { System.Console.WriteLine(line); counter++; } file.Close(); System.Console.WriteLine("There were {0} lines.", counter); // Suspend the screen. System.Console.ReadLine(); } | cs |