log4net 的下载地址
http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip
网上有很多相关的内容,我说明的也是大同小异,只是帮我个人测试的步骤放上来,因为网上有代码虽然有多,但是也有很多是无法成功实现的。
可能是很多人没有试过,就直接转载,导致内容几次转载之后"变质"了
步骤:
1.先添加应用DLL,在bin文件的net/1.1/release,有个DLL,引用下
2.新建单独的配置文件,如文件名 log4net.config,
文件内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
<logger name="PenavicoxmLogger">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
<root>
<level value="ALL" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Penavicoxm.log.txt" />
<param name="datePattern" value="MM-dd HH:mm" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log/Penavicoxm" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd'.txt'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>
3.在程序开始加载的地方加载配置文件 log4net.config
网上的方法大多是
web:
<1>assembly info:
[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]
<2>然后拷贝log4net.config到web的目录
<3>在gloable.asax 的application_start的事件
log4net.Config.XmlConfigurator.Configure( new FileInfo("log4net.config") );
<4>如果要记录什么日志
用ApplicationLog.WriteInfo() WriteError()就可以记录
winform:
<1>assembly info:
[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]
<2> 在入口函数
[STAThread]
private static void Main()
{
log4net.Config.XmlConfigurator.Configure( new FileInfo("log4net.config") );
}
<4>然后拷贝log4net.config到bin的debug/release的目录
或者修改目标项目的属性
项目的属性-通用属性-预生成事件命令行
在那里输入copy $(ProjectDir)log4net.config $(TargetDir)log4net.config
个人试了后,直接如下就可以了。注意:路径的问题,因为你如果在网上搜索的话,会发现很多人都是用相对路径,可能大多数情况是可行的,但是我今天试了很长时间不行,找了很久,才发现时路径的问题,现在用了绝对路径,但不是写死的。Server.MapPath()
System.IO.FileInfo fin = new System.IO.FileInfo(Server.MapPath(".") + "/log4net.config");
log4net.Config.XmlConfigurator.Configure(fin);
上面的方法成功以后,就可以写简单的代码测试了
测试成功的话,会在项目的log文件下有个Penavicoxm.XXXXXX.txt日志文件
转 记录异常案列:
Global.asax.cs文件配置如下:
protected void Application_Start(Object sender, EventArgs e)
{
SystemLog.SetConfig();
}
protected void Application_Error(Object sender, EventArgs e)
{
Exception objExp = HttpContext.Current.Server.GetLastError();
LogHelper.WriteLog("/r/n客户机IP:"+ Request.UserHostAddress +"/r/n错误地址:"+ Request.Url +"/r/n异常信息:"+ Server.GetLastError().Message,objExp);
}
protected void Application_Start(Object sender, EventArgs e)
{
SystemLog.SetConfig();
}
protected void Application_Error(Object sender, EventArgs e)
{
Exception objExp = HttpContext.Current.Server.GetLastError();
LogHelper.WriteLog("/r/n客户机IP:"+ Request.UserHostAddress +"/r/n错误地址:"+ Request.Url +"/r/n异常信息:"+ Server.GetLastError().Message,objExp);
}
eg:
try
{}
catch(Exception ex)
{
LogHelper.WriteLog("ErrorInfo"ex);
}