日誌插件 log4net 的配置和使用

文本格式說明

能夠記載的日誌類別包括:FATAL(致命錯誤)、ERROR(通常錯誤)、WARN(警告)、INFO(通常信息)、DEBUG(調試信息)。html

文本參數說明c#

%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當前語句運行的時刻
%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
%t(thread id):當前語句所在的線程ID 等同於 %thread
%p(priority): 日誌的當前優先級別,即DEBUG、INFO、WARN…等
%c(class):當前日誌對象的名稱,例如:
        模式字符串爲:%-10c -%m%n
        代碼爲:
        ILog log=LogManager.GetLogger(「Exam.Log」);
        log.Debug(「Hello」);
        則輸出爲下面的形式:
        Exam.Log       - Hello
%method:輸出語句所在的方法名
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,若是不夠,則用空格填充
%newline: 錯誤詳情
%message: 自定義輸出信息
%logger: 類
%property: 屬性windows

 

如下爲我的定義的模板app

<conversionPattern value="
%n======= ===
%n【日誌級別】%-5level
%n【記錄時間】%date
%n【線程編號】[%thread]
%n【執行時間】[%r]毫秒
%n【出錯文件】%F
%n【出錯類名】%class
%n【出錯函數】%method
%n【出錯行號】%L
%n【日誌對象】%logger
%n【日誌屬性】%property{NDC}
%n【錯誤描述】%message
%n【錯誤詳情】%newline" />ide

 

輸出示例:函數

==========
【日誌級別】ERROR
【記錄時間】2012-11-08 15:49:37,625
【線程編號】[10]
【執行時間】[180]毫秒
【出錯文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
【出錯行號】24
【出錯的類】ConsoleApplication5.Program 屬性[(null)]
【錯誤描述】錯誤
【錯誤詳情】
System.DivideByZeroException: 嘗試除以零。
   在 ConsoleApplication5.Program.Main(String[] args) 位置 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs:行號 20post

==========
【日誌級別】ERROR
【記錄時間】2012-11-08 15:49:37,666
【線程編號】[10]
【執行時間】[221]毫秒
【出錯文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
【出錯行號】28
【出錯的類】ConsoleApplication5.Program 屬性[(null)]
【錯誤描述】error
【錯誤詳情】
System.Exception: 發生了一個異常spa

 

使用說明:

配置文件:插件

節點: <configuration>中添加命令行

?
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
   < log4net >
     <!--定義輸出到文件中-->
     < appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
       <!--日誌的路徑-->
       < file value="Logs/Log4Net/" />
       <!--是否覆蓋,默認是追加true-->
       < appendToFile value="true"/>
       < rollingStyle value="Composite"/>
       <!--文件名稱-->
       < DatePattern value="yyyy-MM-dd'.log'"></ DatePattern >
       <!--設置無限備份=-1 ,最大備份數爲1000-->
       < param name="MaxSizeRollBackups" value="1000"/>
       <!--每一個文件的大小-->
       < param name="MaximumFileSize" value="500KB"/>
       <!--名稱是否能夠更改成false爲能夠更改-->
       < param name="StaticLogFileName" value="false"/>
       < layout type="log4net.Layout.PatternLayout">
         <!--輸出格式-->
         < conversionPattern value="

%n======= ===
%n【日誌級別】%-5level
%n【記錄時間】%date
%n【線程編號】[%thread]
%n【執行時間】[%r]毫秒
%n【出錯文件】%F
%n【出錯類名】%class
%n【出錯函數】%method
%n【出錯行號】%L
%n【日誌對象】%logger
%n【日誌屬性】%property{NDC}
%n【錯誤描述】%message
%n【錯誤詳情】%newline" />

       </ layout >
     </ appender >
     <!--定義輸出到控制檯命令行中-->
     < appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
       < layout type="log4net.Layout.PatternLayout">
         < conversionPattern value="

%n======= ===
%n【日誌級別】%-5level
%n【記錄時間】%date
%n【線程編號】[%thread]
%n【執行時間】[%r]毫秒
%n【出錯文件】%F
%n【出錯類名】%class
%n【出錯函數】%method
%n【出錯行號】%L
%n【日誌對象】%logger
%n【日誌屬性】%property{NDC}
%n【錯誤描述】%message
%n【錯誤詳情】%newline" />

       </ layout >
     </ appender >
     <!--定義輸出到windows事件中-->
     < appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
       < layout type="log4net.Layout.PatternLayout">
         < conversionPattern value="

%n======= ===
%n【日誌級別】%-5level
%n【記錄時間】%date
%n【線程編號】[%thread]
%n【執行時間】[%r]毫秒
%n【出錯文件】%F
%n【出錯類名】%class
%n【出錯函數】%method
%n【出錯行號】%L
%n【日誌對象】%logger
%n【日誌屬性】%property{NDC}
%n【錯誤描述】%message
%n【錯誤詳情】%newline" />

       </ layout >
     </ appender >
     <!--定義日誌的輸出媒介,下面定義日誌以四種方式輸出。也能夠下面的按照一種類型或其餘類型輸出。-->
     < root >
       <!--文件形式記錄日誌--> >
       < appender-ref ref="SysAppender"/>
       <!--控制檯控制顯示日誌-->
       < appender-ref ref="ConsoleAppender"/>
       <!--Windows事件日誌-->
       <!--<appender-ref ref="EventLogAppender"/>-->
       <!-- 若是不啓用相應的日誌記錄,能夠經過這種方式註釋掉
       <appender-ref ref="AdoNetAppender_Access" />
       -->
     </ root >
 
   </ log4net >

代碼中:

引用

using log4net;
using System.Reflection

在命名空間中添加[紅色的內容]

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace ConsoleApplication5

調用示例:

?
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
34
using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using System.Reflection;
 
[assembly: log4net.Config.XmlConfigurator(Watch = true )]
namespace ConsoleApplication5
{
     class Program
     {
         static void Main( string [] args)
         {
             //建立日誌記錄組件實例
             ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
             //記錄嚴重錯誤
             log.Fatal( "嚴重錯誤" );
             log.Fatal( "嚴重錯誤" , new Exception( "發生了一個致命錯誤" ));
             //記錄錯誤日誌
             log.Error( "錯誤" );
             log.Error( "錯誤" , new Exception( "發生了一個異常" ));
             //記錄警告信息
             log.Warn( "警告" );
             log.Error( "警告" , new Exception( "有一個警告信息" ));
             //記錄通常信息
             log.Info( "通常信息" );
             log.Error( "通常信息" , new Exception( "發出一個通常信息" ));
             //記錄調試信息
             log.Debug( "調試信息" );
             log.Error( "調試信息" , new Exception( "發生了一個調試信息" ));
             Console.Read();
         }
     }
}

 

示例程序下載: 日誌記錄插件_log4net.zip

 

出處:https://www.cnblogs.com/henw/archive/2012/11/08/2760780.html

相關文章
相關標籤/搜索