·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> 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.源码下载:
点击下载源码>>
点击下载数据库文件>>