日志插件 log4net 的使用


文本格式說明

可以記載的日志類別包括:FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般信息)、DEBUG(調試信息)。

文本參數說明

%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
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,如果不夠,則用空格填充
%newline: 錯誤詳情
%message: 自定義輸出信息
%logger: 類
%property: 屬性

 

以下為個人定義的模板

%n==========
%n【日志級別】%-5level
%n【記錄時間】%date
%n【線程編號】[%thread]
%n【執行時間】[%r]毫秒
%n【出錯文件】%F
%n【出錯行號】%L
%n【出錯的類】%logger 屬性[%property{NDC}]
%n【錯誤描述】%message
%n【錯誤詳情】%newline

 

輸出示例:

==========
【日志級別】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:行號 20

==========
【日志級別】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: 發生了一個異常

 

使用說明:

配置文件:

節點: <configuration>中添加

  <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【出錯行號】%L
%n【出錯的類】%logger 屬性[%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【出錯行號】%L
%n【出錯的類】%logger 屬性[%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【出錯行號】%L
%n【出錯的類】%logger 屬性[%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

調用示例:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM