본문 바로가기
C#

C# Log4Net을 이용한 로그남기기

by violetoz 2013. 5. 14.

http://logging.apache.org/log4net/index.html 
위 사이트에서 라이브러리를 제공한다.  binary를 다운로드 받으면 각 플랫폼마다 빌드된 lib 가 존재 한다. 
현재 프로젝트는  .net Framwork 3.5 기반이므로  .net 3.5 빌드 버젼의 dll을 사용한다.

dll 파일을 참조에 추가하면

위와 같이 References 라이브러리에서 확인할수있다.

이 라이브러리를 사용하기 위해서  log4net.xml 파일이 필요하다. 로그 정보 파일로 log4j와 거의 동일하다.

   1: <log4net>
   2:    <appender name="Console" type="log4net.Appender.ConsoleAppender">
   3:        <layout type="log4net.Layout.PatternLayout">
   4:            <!-- Pattern to output the caller's file name and line number -->
   5:            <conversionPattern value="%d [%t] %-5p %c - %m%n" />
   6:        </layout>
   7:    </appender>
   8:    
   9:    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  10:        <file value="./log/officetalk.log" />
  11:        <appendToFile value="true" />
  12:        <datePattern value="-yyyy-MM-dd" />
  13:        <rollingStyle value="Date" />
  14:        <layout type="log4net.Layout.PatternLayout">
  15:            <conversionPattern value="%d [%t] %-5p %c - %m%n" />
  16:        </layout>
  17:    </appender>
  18:  
  19:     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  20:         <bufferSize value="1" />
  21:         <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  22:         <connectionString value="data source=10.88.165.224;initial catalog=Marvin;integrated security=false;persist security info=True;User ID=sa;Password=akdlxlql1" />
  23:         <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
  24:         <parameter>
  25:             <parameterName value="@log_date" />
  26:             <dbType value="DateTime" />
  27:             <layout type="log4net.Layout.RawTimeStampLayout" />
  28:         </parameter>
  29:         <parameter>
  30:             <parameterName value="@thread" />
  31:             <dbType value="String" />
  32:             <size value="255" />
  33:             <layout type="log4net.Layout.PatternLayout">
  34:                 <conversionPattern value="%thread" />
  35:             </layout>
  36:         </parameter>
  37:         <parameter>
  38:             <parameterName value="@log_level" />
  39:             <dbType value="String" />
  40:             <size value="50" />
  41:             <layout type="log4net.Layout.PatternLayout">
  42:                 <conversionPattern value="%level" />
  43:             </layout>
  44:         </parameter>
  45:         <parameter>
  46:             <parameterName value="@logger" />
  47:             <dbType value="String" />
  48:             <size value="255" />
  49:             <layout type="log4net.Layout.PatternLayout">
  50:                 <conversionPattern value="%logger" />
  51:             </layout>
  52:         </parameter>
  53:         <parameter>
  54:             <parameterName value="@message" />
  55:             <dbType value="String" />
  56:             <size value="4000" />
  57:             <layout type="log4net.Layout.PatternLayout">
  58:                 <conversionPattern value="%message" />
  59:             </layout>
  60:         </parameter>
  61:         <parameter>
  62:             <parameterName value="@exception" />
  63:             <dbType value="String" />
  64:             <size value="2000" />
  65:             <layout type="log4net.Layout.ExceptionLayout" />
  66:         </parameter>
  67:     </appender>
  68:     
  69:     <root>
  70:         <level value="DEBUG" />
  71:         <appender-ref ref="Console" />
  72:         <appender-ref ref="RollingFile" />
  73:     </root>
  74:     
  75: </log4net>

이 설정 파일은 일단 빌드된 exe 파일 존재하는 곳에 위치 해둔다.   

해당 설정 정보를 load 하는 코드 이다. Application 진입시점에 코드하면 된다.  Application  app()  생성자 메소드에서 추가한다.

   1: XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));

위 코드에서  경로를 변경해도 되겠지만 일단 상대경로를 사용하기 위해  exe 파일이 존재 하는 경로에 둔다.

Log4Net을 이용해 간단히 작성한 Logger 클래스 이다.

   1: class Logger
   2:     {
   3:         public static void initLogger()
   4:         {
   5:             //로그 설정파일 읽기
   6:             XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));
   7:         }
   8:  
   9:         protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  10:         public static void writeInfo(string msg)
  11:         {
  12:             if (logger.IsInfoEnabled) logger.Info(msg); 
  13:         }
  14:  
  15:         public static void writeDebug(string msg)
  16:         {
  17:             if (logger.IsDebugEnabled) logger.Debug(msg);
  18:         }
  19:     }

'C#' 카테고리의 다른 글

C# Time  (0) 2013.05.28
C# 가비지컬렉터와 가비지컬렉션  (0) 2013.05.14
C# 윈폼에서 단축키 설정  (0) 2013.05.03
c# Window Form Application Idle 루프문 사용자설정  (0) 2013.04.30
C# WindowForm Process종료  (0) 2013.04.30