首先从官方网站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
}
}
注意绿色部分一定不能省略,不然的话,代码能跑起来,就是不写入日志文件,擦。
另外红色部分是设置使用我们刚才手写的配置文件,注意,要把配置文件设置为“复制到输出目录”。