log4net筆記

源碼下載app

dll下載(1.2.13版本)ide

一、LogFileAppender的使用經驗

使用VS2010新建TestForm工程,使用log4net的步驟以下:佈局

一、引用log4net.dll(最新的版本是1.2.13);spa

二、新建的項目沒有App.config文件,添加新建項「應用程序配置文件」 App.config;線程

三、在App.config中添加以下內容:rest

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
            log4net-net-1.0"/>
  </configSections>
  <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="LogFileAppender"/>
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="log-file.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n"/>
      </layout>
    </appender>
  </log4net>
configSections和log4net標籤

四、在Properties的AssemblyInfo.cs文件末尾添加以下內容:日誌

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
assembly文件的配置

五、添加一個button,全部代碼以下:code

namespace TestForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");
            log.Debug("hello");
        }
    }
}
使用方法

六、運行後點擊button,在Debug文件夾(TestForm.exe所在的文件夾)下,有log-file.txt文件,打開內容以下:orm

2014-06-10 14:05:30,561 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:30,679 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:31,037 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:31,249 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
日誌內容

 七、格式符含義(轉換模式(ConversionPattern)):xml

%d:打印日誌的時間,精確到毫秒【2014-06-10 14:38:11,112】

%n:回車;

%m:日誌內容;

%c:你在程序中使用【log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");】建立的日誌的名字My1stLogger;

%p:日誌級別或者叫信息類型(Fatal--Debug--Info--......);

%F:所在類或者叫所在文件名,好比【D:\TestForm\Form1.cs】

%L:打印日誌的語句所在文件中的行號。

%-數字:表示該項的最小長度,若是不夠用空格填充。

---------------------

 

%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息

 

%n(new line):換行

 

%d(datetime):輸出當前語句運行的時刻

 

%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數

 

%t(thread id):當前語句所在的線程ID

 

%p(priority): 日誌的當前優先級別,即DEBUG、INFO、WARN…等

 

%c(class):當前日誌對象的名稱,例如:

 

       模式字符串爲:%-10c -%m%n

 

       代碼爲:

 

ILog log=LogManager.GetLogger(「Exam.Log」);

 

log.Debug(「Hello」);

 

    則輸出爲下面的形式:

 

Exam.Log       - Hello

 

%L:輸出語句所在的行號

 

%F:輸出語句所在的文件名

 

%-數字:表示該項的最小長度,若是不夠,則用空格填充

 

例如,轉換模式爲%r [%t]%-5p %c - %m%n 的 PatternLayout 將生成相似於如下內容的輸出:

 

176 [main] INFO  org.foo.Bar - Located nearest gas station.

 

---------------------

二、RollingFileAppender

 

TestForm2演示程序的配置文件:

注意:對於Header和Footer,程序每從新啓動一次,會產生新的header和footer。

 

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
            log4net-net-1.0"/>
  </configSections>
  <log4net>
    <!--使用Rolling方式記錄日誌按照日來記錄日誌-->
    <appender name="RunLog" type="log4net.Appender.RollingFileAppender">
      <!--文件名,能夠相對路徑,也能夠絕對路徑,這裏只給定了文件夾-->
      <file value="log\\runtime\\"/>
      <!--最小鎖定模型以容許多個進程能夠寫入同一個文件,解決文件獨佔問題-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <!--是否增長文件-->
      <appendToFile value="true"/>
      <!--日誌追加類型,Date爲按日期增長文件,Size爲按大小-->
      <rollingStyle value="Date"/>
      <!--文件命名格式,非日期參數化要進行轉義,如自定義文件後綴-->
      <datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;"/>
      <!--是否固定文件名-->
      <staticLogFileName value="false"/>
      <!--內容佈局-->
      <layout type="log4net.Layout.PatternLayout">
        <!--頭部-->
        <header value="----------------------header--------------------------
"/>
        <!--結尾-->
        <footer value="----------------------footer--------------------------
"/>
        <!--輸出格式化-->
        <conversionPattern value="當前時間:%d [%p] %m %n"/>
      </layout>
      <!--過濾器-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <!--只接受最小等級與最大等級之間的日誌輸出,這裏只接受INFO級別的輸出-->
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
      </filter>
    </appender>

    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
      <file value="log\\error\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <header value="----------------------header--------------------------
"/>
        <footer value="----------------------footer--------------------------
"/>
        <conversionPattern value="當前時間:%d 錯誤類型:[%p]  信息:%m  所在類:%F 所在行:%L %n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!--只接受最小等級與最大等級之間的日誌輸出,其餘的被過濾,這裏接受WARN(警告),ERROR(錯誤),FATAL(致命)級別的輸出-->
        <param name="LevelMin" value="WARN"/>
        <param name="LevelMax" value="FATAL"/>
      </filter>
    </appender>

    <!--定義日誌的輸出媒介-->
    <root>
      <!--RollingFileAppender事件日誌-->
      <appender-ref ref="RunLog"/>
      <appender-ref ref="ErrorLog"/>
    </root>

  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>
TestForm2的配置文件
相關文章
相關標籤/搜索