說明:本程序演示如何利用log4net記錄程序日誌信息。log4net是一個功能著名的開源日誌記錄組件。利用log4net能夠方便地將日誌信息記錄到文件、控制檯、Windows事件日誌和數據庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。而且咱們還能夠記載控制要記載的日誌級別,能夠記載的日誌類別包括:FATAL(致命錯誤)、ERROR(通常錯誤)、WARN(警告)、INFO(通常信息)、DEBUG(調試信息)。要想獲取最新版本的log4net組件庫,能夠到官方網站http://logging.apache.org/log4net/下載。如今的最新版本是1.2.10。web
首先從官方網站下載最近版本的log4net組件,如今的最新版本是1.2.10。在程序中咱們只須要log4net.dll文件就好了,添加對log4net.dll的引用,就能夠在程序中使用了。apache
接着咱們配置相關的配置文件(WinForm對應的是*.exe.config,WebForm對應的是*.config),本實例中是控制檯應用程序,配置以下(附各配置的說明):windows
<?
xml version="1.0" encoding="utf-8"
?>
<
configuration
>
<
configSections
>
<
section
name
="log4net"
type
="System.Configuration.IgnoreSectionHandler"
/>
</
configSections
>
<
appSettings
>
</
appSettings
>
<
log4net
>
<!--
定義輸出到文件中
-->
<
appender
name
="LogFileAppender"
type
="log4net.Appender.FileAppender"
>
<!--
定義文件存放位置
-->
<
file
value
="D:/log4netfile.txt"
/>
<
appendToFile
value
="true"
/>
<
rollingStyle
value
="Date"
/>
<
datePattern
value
="yyyyMMdd-HH:mm:ss"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<!--
每條日誌末尾的文字說明
-->
<
footer
value
="by 周公"
/>
<!--
輸出格式
-->
<!--
樣例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info
-->
<
conversionPattern
value
="記錄時間:%date 線程ID:[%thread] 日誌級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"
/>
</
layout
>
</
appender
>
<!--
定義輸出到控制檯命令行中
-->
<
appender
name
="ConsoleAppender"
type
="log4net.Appender.ConsoleAppender"
>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
/>
</
layout
>
</
appender
>
<!--
定義輸出到windows事件中
-->
<
appender
name
="EventLogAppender"
type
="log4net.Appender.EventLogAppender"
>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
/>
</
layout
>
</
appender
>
<!--
定義輸出到數據庫中,這裏舉例輸出到Access數據庫中,數據庫爲C盤的log4net.mdb
-->
<
appender
name
="AdoNetAppender_Access"
type
="log4net.Appender.AdoNetAppender"
>
<
connectionString
value
="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"
/>
<
commandText
value
="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"
/>
<!--
定義各個參數
-->
<
parameter
>
<
parameterName
value
="@logDate"
/>
<
dbType
value
="String"
/>
<
size
value
="240"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%date"
/>
</
layout
>
</
parameter
>
<
parameter
>
<
parameterName
value
="@thread"
/>
<
dbType
value
="String"
/>
<
size
value
="240"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%thread"
/>
</
layout
>
</
parameter
>
<
parameter
>
<
parameterName
value
="@logLevel"
/>
<
dbType
value
="String"
/>
<
size
value
="240"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%level"
/>
</
layout
>
</
parameter
>
<
parameter
>
<
parameterName
value
="@logger"
/>
<
dbType
value
="String"
/>
<
size
value
="240"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%logger"
/>
</
layout
>
</
parameter
>
<
parameter
>
<
parameterName
value
="@message"
/>
<
dbType
value
="String"
/>
<
size
value
="240"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%message"
/>
</
layout
>
</
parameter
>
</
appender
>
<!--
定義日誌的輸出媒介,下面定義日誌以四種方式輸出。也能夠下面的按照一種類型或其餘類型輸出。
-->
<
root
>
<!--
文件形式記錄日誌
-->
<
appender-ref
ref
="LogFileAppender"
/>
<!--
控制檯控制顯示日誌
-->
<
appender-ref
ref
="ConsoleAppender"
/>
<!--
Windows事件日誌
-->
<
appender-ref
ref
="EventLogAppender"
/>
<!--
若是不啓用相應的日誌記錄,能夠經過這種方式註釋掉 <appender-ref ref="AdoNetAppender_Access" />
-->
</
root
>
</
log4net
>
</
configuration
>
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Windows.Forms;
using
System.Reflection;
using
log4net;
//
注意下面的語句必定要加上,指定log4net使用.config文件來讀取配置信息
//
若是是WinForm(假定程序爲MyDemo.exe,則須要一個MyDemo.exe.config文件)
//
若是是WebForm,則從web.config中讀取相關信息
[assembly: log4net.Config.XmlConfigurator(Watch
=
true
)]
namespace
Log4NetDemo {
///
<summary>
///
說明:本程序演示如何利用log4net記錄程序日誌信息。log4net是一個功能著名的開源日誌記錄組件。
///
利用log4net能夠方便地將日誌信息記錄到文件、控制檯、Windows事件日誌和數據庫中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。
///
下面的例子展現瞭如何利用log4net記錄日誌
///
做者:周公
///
時間:2008-3-26
///
</summary>
public
class
MainClass {
public
static
void
Main(
string
[] args)
{
//
Application.Run(new MainForm());
//
建立日誌記錄組件實例
ILog log
=
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//
記錄錯誤日誌
log.Error(
"
error
"
,
new
Exception(
"
發生了一個異常
"
));
//
記錄嚴重錯誤
log.Fatal(
"
fatal
"
,
new
Exception(
"
發生了一個致命錯誤
"
));
//
記錄通常信息
log.Info(
"
info
"
);
//
記錄調試信息
log.Debug(
"
debug
"
);
//
記錄警告信息
log.Warn(
"
warn
"
);
Console.WriteLine(
"
日誌記錄完畢。
"
);
Console.Read();
}
}
}