先附上实现代码:http://download.csdn.net/detail/sinat_22013331/9570632
log4net的使用过程说明:
我理解的log4net的使用可以简单的概括为:引用dll文件 -- 配置log4net.config -- 加载配置文件 -- 定义LogHelper类 -- 使用LogHelper
step 1:对项目添加引用log4net.dll
下载一个log4net包,将log4net.dll文件拷贝到项目的根目录下,并在项目中添加该文件的引用
step 2:在项目config文件中添加配置信息
在项目的config配置文件中添加下面的配置信息,这个config文件可以是web.config,也可能是app.config,或者是其他类的项目的全局配置文件
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
</configuration>
step 3:定义log4net.config配置文件
在log4net配置文件中,定义输出格式和输出形式。比如下面的例子:
<?xml version="1.0"?>
<configuration>
<log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="log\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
</appender>
<root>
<level value="ERROR"/>
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
这个例子中,只定义了一种输出形式,就是以文本文件的形式输出。还可以用其他形式输出,这就需要别的配置文件了。
step 4:在项目主入口配置log4net.config文件
这里的配置分为三步,首先是找到log4net的路径,其次是获取这个文件,第三步就是configurator加载配置信息
// string filePath = Server.MapPath("~/log4net.config");
string filePath = "log4net.config";
FileInfo fileInfo = new FileInfo(filePath);
XmlConfigurator.ConfigureAndWatch(fileInfo);
在web项目中可以使用server.MapPath获取文件的虚拟路径。而我这里只是做一个测试,所以直接把log4net放在文件根目录的debug文件夹下,使之能够被找到。
然后用FileInfo获取文件信息,用XmlConfigurator来配置文件。
step 5:定义一个LogHelper类,封装需要做的操作
在这个类的前面,要加上读取配置信息的操作,[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
需要注意的是这条语句要放在命名空间前面。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
namespace Log4netTest
{
class LogHelper
{
#region 记录exception
public static void WriteLog(Type t, Exception e)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error("Error",e);
}
#endregion
#region 记录某条message
public static void WriteLog(Type t, string msg)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error(msg);
}
#endregion
}
}
这样就完成了基本配置方案,最后只需要在程序中有需要的地方调用LogHelper即可
step 6:调用LogHelper,实现日志记录
//记录某条string
LogHelper.WriteLog(typeof(Program), "测试是否实现了日志功能");
int[] a = new int[2];
try
{
for (int i = 0; i < 5; i++)
{
a[i] = i;
}
}
catch (Exception e)
{
//记录某个exception
LogHelper.WriteLog(typeof(Program), e);
}
如下图,已经实现了错误日志记录的功能。具体的实现请下载实现代码来解读,链接在文首。
详细的错误信息如下: