asp.net中使用log4net詳解
說(shuō)明:本程序演示如何利用log4net記錄程序日志信息。log4net是一個(gè)功能著名的開源日志記錄組件。利用log4net可以方便地將日志信息記錄到文件、控制臺(tái)、Windows事件日志和數(shù)據(jù)庫(kù)(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我們還可以記載控制要記載的日志級(jí)別,可以記載的日志類別包括:FATAL(致命錯(cuò)誤)、ERROR(一般錯(cuò)誤)、WARN(警告)、INFO(一般信息)、DEBUG(調(diào)試信息)。要想獲取最新版本的log4net組件庫(kù),可以到官方網(wǎng)站http://logging.apache.org/log4net/下載?,F(xiàn)在的最新版本是1.2.10。
下面的例子展示了如何利用log4net記錄日志 。
首先從官方網(wǎng)站下載最近版本的log4net組件,現(xiàn)在的最新版本是1.2.10。在程序中我們只需要log4net.dll文件就行了,添加對(duì)log4net.dll的引用,就可以在程序中使用了。
Log4net.dll下載地址:http://www.dhdzp.com/dll/Log4net.dll.html
接著我們配置相關(guān)的配置文件(WinForm對(duì)應(yīng)的是*.exe.config,WebForm對(duì)應(yīng)的是*.config),本實(shí)例中是控制臺(tái)應(yīng)用程序,配置如下(附各配置的說(shuō)明):
<? 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" >
<!-- 每條日志末尾的文字說(shuō)明 -->
< footer value ="by 周公" />
<!-- 輸出格式 -->
<!-- 樣例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info -->
< conversionPattern value ="記錄時(shí)間:%date 線程ID:[%thread] 日志級(jí)別:%-5level 出錯(cuò)類:%logger property:[%property{NDC}] - 錯(cuò)誤描述:%message%newline" />
</ layout >
</ appender >
<!-- 定義輸出到控制臺(tái)命令行中 -->
< 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 >
<!-- 定義輸出到數(shù)據(jù)庫(kù)中,這里舉例輸出到Access數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)為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)" />
<!-- 定義各個(gè)參數(shù) -->
< 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" />
<!-- 控制臺(tái)控制顯示日志 -->
< appender-ref ref ="ConsoleAppender" />
<!-- Windows事件日志 -->
< appender-ref ref ="EventLogAppender" />
<!-- 如果不啟用相應(yīng)的日志記錄,可以通過(guò)這種方式注釋掉
<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;
// 注意下面的語(yǔ)句一定要加上,指定log4net使用.config文件來(lái)讀取配置信息
// 如果是WinForm(假定程序?yàn)镸yDemo.exe,則需要一個(gè)MyDemo.exe.config文件)
// 如果是WebForm,則從web.config中讀取相關(guān)信息
[assembly: log4net.Config.XmlConfigurator(Watch = true )]
namespace Log4NetDemo
{
/// <summary>
/// 說(shuō)明:本程序演示如何利用log4net記錄程序日志信息。log4net是一個(gè)功能著名的開源日志記錄組件。
/// 利用log4net可以方便地將日志信息記錄到文件、控制臺(tái)、Windows事件日志和數(shù)據(jù)庫(kù)中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。
/// 下面的例子展示了如何利用log4net記錄日志
/// 作者:周公
/// 時(shí)間:2008-3-26
/// 首發(fā)地址: http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx
/// </summary>
public class MainClass
{
public static void Main( string [] args)
{
// Application.Run(new MainForm());
// 創(chuàng)建日志記錄組件實(shí)例
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
// 記錄錯(cuò)誤日志
log.Error( " error " , new Exception( " 發(fā)生了一個(gè)異常 " ));
// 記錄嚴(yán)重錯(cuò)誤
log.Fatal( " fatal " , new Exception( " 發(fā)生了一個(gè)致命錯(cuò)誤 " ));
// 記錄一般信息
log.Info( " info " );
// 記錄調(diào)試信息
log.Debug( " debug " );
// 記錄警告信息
log.Warn( " warn " );
Console.WriteLine( " 日志記錄完畢。 " );
Console.Read();
}
}
}
運(yùn)行結(jié)果:

控制臺(tái)上的輸出

日志文件內(nèi)容
在這里需要特別說(shuō)明一下,注意上面的代碼中有這么一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)](在需要使用log4net的類的namespace處),如果沒(méi)有這句就會(huì)在調(diào)試時(shí)得到如下留言中所說(shuō)的“程序調(diào)試起來(lái)時(shí)isDebugEnable"的情況,希望大家注意。?
以上所述是小編給大家介紹的asp.net中使用log4net詳解,希望對(duì)大家有所幫助。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄
Gridview控件中并沒(méi)有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。2008-11-11
如何在一個(gè).NET?Core項(xiàng)目中使用RabbitMQ進(jìn)行即時(shí)消息管理
本文提供了在.NETCore項(xiàng)目中使用RabbitMQ進(jìn)行即時(shí)消息管理的詳細(xì)操作指南,包括安裝Erlang和RabbitMQ,配置RabbitMQ,以及在.NETCore項(xiàng)目中編寫代碼和調(diào)試,操作步驟詳盡,感興趣的朋友一起看看吧2024-09-09
asp.net計(jì)算每個(gè)頁(yè)面執(zhí)行時(shí)間的方法
這篇文章主要介紹了asp.net計(jì)算每個(gè)頁(yè)面執(zhí)行時(shí)間的方法,涉及asp.net操作時(shí)間的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
ASP.NET MVC實(shí)現(xiàn)多個(gè)按鈕提交的方法
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC實(shí)現(xiàn)多個(gè)按鈕提交的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
在.NET6中使用配置Quartz.NET定時(shí)任務(wù)并使用IHostedService實(shí)現(xiàn)項(xiàng)目啟動(dòng)自動(dòng)加載任務(wù)
Quartz.Net是一個(gè)強(qiáng)大、開源、輕量的作業(yè)調(diào)度框架,在平時(shí)的項(xiàng)目開發(fā)當(dāng)中也會(huì)時(shí)不時(shí)的需要運(yùn)用到定時(shí)調(diào)度方面的功能,這篇文章主要介紹了在.NET6中使用配置Quartz.NET定時(shí)任務(wù)并使用IHostedService實(shí)現(xiàn)項(xiàng)目啟動(dòng)自動(dòng)加載任務(wù),需要的朋友可以參考下2024-04-04
GridView自動(dòng)增加序號(hào)(三種實(shí)現(xiàn)方式)
第一種方式,直接在Aspx頁(yè)面GridView模板列中.這種的缺點(diǎn)是到第二頁(yè)分頁(yè)時(shí)又重新開始了,第二種方式分頁(yè)時(shí)進(jìn)行了計(jì)算,這樣會(huì)累計(jì)向下加,點(diǎn)三種放在cs代碼中2013-04-04
Asp.net實(shí)現(xiàn)無(wú)刷新調(diào)用后臺(tái)實(shí)體類數(shù)據(jù)并以Json格式返回
本文主要分享了Asp.net實(shí)現(xiàn)無(wú)刷新調(diào)用后臺(tái)實(shí)體類數(shù)據(jù)并以Json格式返回的具體實(shí)例方法,具有一定的參考價(jià)值,有需要的朋友可以看下2016-12-12
DotNetCore深入了解之HttpClientFactory類詳解
這篇文章主要給大家介紹了關(guān)于DotNetCore深入了解之HttpClientFactory類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
IIS故障(Connections_Refused)問(wèn)題分析及處理
這幾天某地市Web服務(wù)器連續(xù)多次出現(xiàn)故障問(wèn)題(Connections_Refused),正好借這個(gè)案例向大家詳細(xì)介紹下,需要了解的朋友可以參考下2012-12-12
一個(gè)事半功倍的c#方法 動(dòng)態(tài)注冊(cè)按鈕事件
前幾天在網(wǎng)上看見(jiàn)一個(gè)制作計(jì)算器的c#程序,其中有一個(gè)動(dòng)態(tài)注冊(cè)按鈕事件,覺(jué)的很有用。于是實(shí)際操作了一哈, 確實(shí)比較好。2010-04-04

