Log4net Visual Studio版的log4j

在撰寫Java程式時很習慣的使用log4j來當程式訊息的輸出記錄,只需要簡單的改變設定檔就可以改變訊息是要顯示於Console、存入資料庫或是存於檔案裡,而且可選擇對於不同層級的記錄,十分方便於開發的Debug。

log4j也有.net版本,就叫log4net,也是由Apache基金會開發維護,在使用上與log4j還蠻相似的,log4j在使用時只需把config檔放置於classes跟目錄就可以了,而log4net則需要手動載入此設定檔,安裝設定的方法如下。

  1. 下載log4net的dll檔解壓縮後,在目錄\log4net-1.2.10\bin\net\2.0\release\取出log4net.dll
  2. 加入參考加入參考log4net

    加入log4net.dll

  3. 建立config檔log4net.configlevel value=”DEBUG”是記錄的層級到Debug層級,appender-ref ref=”stdout”表示使用name為stdout為輸出,而stdout設定的內容為Console輸出,另一appender-ref ref=”APException_Info”則為檔案記錄輸出,詳細的內容可以參考官方的文件。
    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"  />
      </configSections>
    
      <log4net>
      <!-- Setup the root category, add the appenders and set the default level -->
      <root>
        <level value="DEBUG" />
        <appender-ref ref="stdout" />
        <appender-ref ref="APException_Info" />
      </root>
      <!-- Define some output appenders -->
      <appender name="stdout" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        </layout>
      </appender>
    
      <!-- FileAppender appends to a log and it is manually managed or size  %d %logger %m%n  -->
      <appender name="APException_Info" type="log4net.Appender.RollingFileAppender">
        <file value="postit.log" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value="'.'yyyy-MM-dd" />
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        </layout>
      </appender>
    </log4net>
      </configuration>
  4. 把設定檔放置到專案目錄的bin\Debug或bin\Debug
  5. 在使用log4net前需要載入log4net.config
    //載入log4net.config
    System.IO.FileInfo f = new System.IO.FileInfo("log4net.config");
    
    log4net.Config.XmlConfigurator.Configure(f);
  6. 測試結果如果log4net啟用成功,則會如下圖:

    1.jpg

    否則則只會有第一個路徑,使用Console.WriteLine出來的訊息。

原始碼:

static void Main(string[] args)
        {
            //載入log4net.config
            System.IO.FileInfo f = new System.IO.FileInfo("log4net.config");

            log4net.Config.XmlConfigurator.Configure(f);
            //輸出log4net.config路徑
            Console.WriteLine(f.Directory);

            ILog logger = LogManager.GetLogger(typeof(Program));
            //利用log4net輸出log4net.config路徑
            logger.Info(f.Directory);
            Console.ReadLine();
        }

發表迴響