首先從官方網站http://logging.apache.org/log4net/下載最近版本的log4net組件。在程序中添加對log4net.dll的引用,就可以在程序中使用了。
下一步,編寫配置文件,內容如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>
</configSections>
<log4net>
<!--定義日志的輸出媒介,下面定義日志以四種方式輸出。也可以下面的按照一種類型或其他類型輸出。-->
<root>
<level value="Debug" name="myLogger"/>
<appender-ref ref="ADONetAppender"/>
<appender-ref ref="LogFileAppender" />
</root>
<!--定義輸出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定義文件存放位置-->
<file value="log4netfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HH:mm:ss" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]"/>
<param name="Footer" value="[Footer]"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c[%x] - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] -%m%n" />
</layout>
</appender>
</log4net>
</configuration>
以上配置中最重要的就是紅色字體部分,設置了日志文件的文件名。
下面是使用代碼,log4net可以記載的日志類別包括:FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般信息)、DEBUG(調試信息)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//+-------------------------------------------------------------------+
//+ FileName: LogExecutor
//+ File Created: 2012-6-5 9:07:02
//+-------------------------------------------------------------------+
//+ Purpose:
//+-------------------------------------------------------------------+
//+ History: 2012-6-5 9:07:02 by JingXiao
//+-------------------------------------------------------------------+
//+ Comment:
//+-------------------------------------------------------------------+
//+ Creator JingXiao
//+-------------------------------------------------------------------+
[assembly: log4net.Config.DOMConfigurator(Watch = true)]
namespace LogService
{
public class LogExecutor
{
#region Logger Setter
?
private static readonly log4net.ILog _log=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
#region 構造函數
/// <summary>
/// 構造函數
/// </summary>
private LogExecutor()
{
System.IO.FileInfo configfile = new System.IO.FileInfo(@"LogCfg.config");
log4net.Config.DOMConfigurator.Configure(configfile);
}
#endregion
//單例
public static readonly LogExecutor instance = new LogExecutor();
#region 成員
/// <summary>
/// 普通信息寫日志
/// </summary>
/// <param name="msg">要記錄的字符串</param>
public void WriteInfo(string msg)
{
_log.Info(msg);
}
/// <summary>
/// 普通信息寫日志(字串拼接模式)
/// </summary>
/// <param name="msg">要記錄的字符串</param>
public void WriteInfo(string format,params object[] args)
{
string msg = string.Format(format, args);
_log.Info(msg);
}
/// <summary>
/// 普通異常信息寫日志
/// </summary>
/// <param name="sourceServiceID">(發生調用的)服務ID</param>
/// <param name="logInfo">日志內容</param>
public void WriteEx(string msg,Exception ex)
{
_log.Error(msg,ex);
}
/// <summary>
///
/// </summary>
/// <param name="msg"></param>
/// <param name="ex"></param>
public void WriteFatalEx(string msg,Exception ex)
{
_log.Fatal(msg,ex);
}
/// <summary>
/// 調試信息
/// </summary>
/// <param name="msg"></param>
public void WriteDebugInfo(string msg)
{
_log.Debug(msg);
}
/// <summary>
/// 調試信息(字串拼接模式)
/// </summary>
/// <param name="format"></param>
/// <param name="args"></param>
public void WriteDebugInfo(string format, params object[] args)
{
_log.Debug(string.Format(format, args));
}
#endregion
}
}
注意綠色部分一定不能省略,不然的話,代碼能跑起來,就是不寫入日志文件,擦。
另外紅色部分是設置使用我們剛才手寫的配置文件,注意,要把配置文件設置為“復制到輸出目錄”。