asp.net中使用log4net詳解
說明:本程序演示如何利用log4net記錄程序日志信息。log4net是一個(gè)功能著名的開源日志記錄組件。利用log4net可以方便地將日志信息記錄到文件、控制臺(tái)、Windows事件日志和數(shù)據(jù)庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我們還可以記載控制要記載的日志級(jí)別,可以記載的日志類別包括:FATAL(致命錯(cuò)誤)、ERROR(一般錯(cuò)誤)、WARN(警告)、INFO(一般信息)、DEBUG(調(diào)試信息)。要想獲取最新版本的log4net組件庫,可以到官方網(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://chabaoo.cn/dll/Log4net.dll.html
接著我們配置相關(guān)的配置文件(WinForm對(duì)應(yīng)的是*.exe.config,WebForm對(duì)應(yīng)的是*.config),本實(shí)例中是控制臺(tái)應(yīng)用程序,配置如下(附各配置的說明):
<? 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 ="記錄時(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ù)庫中,這里舉例輸出到Access數(shù)據(jù)庫中,數(shù)據(jù)庫為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)的日志記錄,可以通過這種方式注釋掉
<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(假定程序?yàn)镸yDemo.exe,則需要一個(gè)MyDemo.exe.config文件)
// 如果是WebForm,則從web.config中讀取相關(guān)信息
[assembly: log4net.Config.XmlConfigurator(Watch = true )]
namespace Log4NetDemo
{
/// <summary>
/// 說明:本程序演示如何利用log4net記錄程序日志信息。log4net是一個(gè)功能著名的開源日志記錄組件。
/// 利用log4net可以方便地將日志信息記錄到文件、控制臺(tái)、Windows事件日志和數(shù)據(jù)庫中(包括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)容
在這里需要特別說明一下,注意上面的代碼中有這么一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)](在需要使用log4net的類的namespace處),如果沒有這句就會(huì)在調(diào)試時(shí)得到如下留言中所說的“程序調(diào)試起來時(shí)isDebugEnable"的情況,希望大家注意。?
以上所述是小編給大家介紹的asp.net中使用log4net詳解,希望對(duì)大家有所幫助。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
運(yùn)行asp.net時(shí)出現(xiàn) http錯(cuò)誤404-文件或目錄未找到
問題描述: http錯(cuò)誤404-文件或目錄未找到的解決方法2009-03-03
.net實(shí)現(xiàn)動(dòng)態(tài)驗(yàn)證碼功能
這篇文章主要介紹了.net實(shí)現(xiàn)動(dòng)態(tài)驗(yàn)證碼功能,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
ASP.NET MVC3 實(shí)現(xiàn)全站重定向的簡單方法
這篇文章主要介紹了ASP.NET MVC3 實(shí)現(xiàn)全站重定向的簡單方法,有需要的朋友可以參考一下2014-01-01
asp.net 根據(jù)漢字的拼音首字母搜索數(shù)據(jù)庫(附 LINQ 調(diào)用方法)
我們經(jīng)常需要使用拼音首字母來檢索數(shù)據(jù)庫,特別是應(yīng)用于醫(yī)院、商店等行業(yè)軟件中。譬如搜索“zgr”就可以搜索所有包含“中國人”的記錄。那么如果來實(shí)現(xiàn)才能即高效又方便呢?2010-04-04
ASP.NET Core2讀寫InfluxDB時(shí)序數(shù)據(jù)庫的方法教程
Influxdb是一個(gè)開源的分布式時(shí)序、時(shí)間和指標(biāo)數(shù)據(jù)庫,使用go語言編寫,無需外部依賴,下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core2讀寫InfluxDB時(shí)序數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2018-11-11
一步步教你在Asp.net Mvc中使用UEditor編輯器
大家都知道ueditor是百度編輯器,目前使用也比較廣泛,下面這篇文章主要是通過一步步的步驟教大家在Asp.net Mvc中使用UEditor編輯器,需要的朋友可以參考借鑒,下面來一起看看吧。2016-12-12
Asp.net下用JQuery找出哪一個(gè)元素引起PostBack
在Asp.net webform中,如何找出哪一個(gè)按鈕觸發(fā)Button PostBack事件。2010-06-06
詳解ASP.NET與ASP.NET Core用戶驗(yàn)證Cookie并存解決方案
本篇文章主要介紹了詳解ASP.NET與ASP.NET Core用戶驗(yàn)證Cookie并存解決方案 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02

