
·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> Log4Net日志配置
1.添加Log4net.dll引用
将release版Log4net.dll拷贝到Lib文件夹,然后添加引用。
2.在Web.Config(或App.Config)添加配置。
(1)在configSections节点下添加配置:
<!--Log4Net配置-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
(2)在configuration节点下添加配置:
<!--log4net配置(专业配置,推荐)-->
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="WARN"/>
<appender-ref ref="SysAppender"/>
</root>
<!-- PRint only messages of level DEBUG or above in the packages -->
<logger name="WebLogger">
<level value="DEBUG"/>
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="App_Data/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>
<!--log4net配置结束-->
配置信息说明:
Appender:可以将日志输出到不同的地方,不同的输出模板对应不同的Appender:
RollingFileAppender(滚动文件)、AdoNetAppender(数据库)、SmtpAppender(邮件)等。
Level(级别):标识这条日志信息的重要级别。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,设定一个Level,那么低于这个Level的日志是不会被写到Appender中的。
Log4Net还可以设定多个Appender,可以实现同时将日志记录到文件、数据、发送邮件等;可以设定不同的Appender的Level,可以实现普通级别都记录到文件。Error以上级别发送邮件。可以实现对不同的类设定不同的Appender;还可以自定义Appender,这样可以自己实现将Error信息发短信等。
除了Log4Net,还有Enterprise Library中的Logging application Block、Apache的CommonLog以及NLog等,都差不多。
最基本简单的配置,不推荐
<!--log4net配置(最基本简单的配置,不推荐)-->
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="test.txt"/>
<appendToFile value="true"/> --><!--追加--><!--
<maxSizeRollBackups value="10"/> --><!--备份数量--><!--
<maximumFileSize value="1024KB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
<!--log4net配置结束-->
View Code
3.在Global文件Application_Start方法下,程序最开始进行初始化。
using log4net;
using Spring.Web.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using WebApp.Models;
namespace WebApp
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : SpringMvcApplication //System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
log4net.Config.xmlConfigurator.Configure();//读取Log4Net配置信息
#region 开启线程扫描异队列,处理异常信息
//string fileLogPath = Server.MapPath("/Log/");//知道用来保存错误日志文件的文件夹路径
//开启一个线程扫描日志队列
ThreadPool.UnsafeQueueUserWorkItem((a) =>
{
while (true)
{
if (MyExceptionAttribute.exceptionQueue.Count > 0) //判断队列中是否有数据
{
Exception ex = MyExceptionAttribute.exceptionQueue.Dequeue();//出队
if (ex != null)
{
//string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
//File.AppendAllText(fileLogPath + fileName, ex.ToString(), Encoding.Default);//将异常追加写入到文件中
ILog logger = LogManager.GetLogger("errorMsg");
logger.Error(ex); //将异常信息写到磁盘上
}
else
{
Thread.Sleep(3000);
}
}
else
{
Thread.Sleep(3000);//如果队列中没有数据,让当前线程休息3秒钟,避免造成CPU空转,避免CPU的浪费
}
}
}, null);
#endregion
}
}
}
4.测试效果
5.源码下载:
点击下载源码>>
点击下载数据库文件>>