首页 / 日志 / 日志记录类库log4net的使用总结
日志记录类库log4net的使用总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了日志记录类库log4net的使用总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5860字,纯文字阅读大概需要9分钟。
内容图文
log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误、异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键、写入数据库等。这里写个ASP.NET MVC4应用LogNet的Demo:
1.建立ASP.NET MVC4网站,在web.config中写入log4net的配置文件(就是添加两个节点)
1 < configSections > 2 <!-- >需要添加第一个的节点< --> 3 < section name ="log4net" type ="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 4 </ configSections > 5 6 <!-- >需要添加第二个的节点< --> 7 < log4net > 8 <!-- 错误日志配置 :其中name 可以程序员自己定义,但是这个名字一定要和 <logger name="logerror">下面的 9 <appender-ref ref="ErrorAppender"/> 中 ref的值保持一致 10 --> 11 < appender name ="ErrorAppender" type ="log4net.Appender.RollingFileAppender" > 12 <!-- 日志文件存储的位置是:Log\\LogError\\ --> 13 < param name ="File" value ="Log\\LogError\\" /> 14 <!-- 表示将内容以追加的形式,保存到日志文件中 --> 15 < param name ="AppendToFile" value ="true" /> 16 <!-- 每天的日志备份数可以有100个 --> 17 < param name ="MaxSizeRollBackups" value ="100" /> 18 <!-- 表示每个日志文件的大小只能是10M --> 19 < param name ="MaxFileSize" value ="10240" /> 20 <!-- 文件名称是固定格式的 --> 21 < param name ="StaticLogFileName" value ="false" /> 22 <!-- 文件名称是固定格式为:yyyyMMdd --> 23 < param name ="DatePattern" value ="yyyyMMdd" /> 24 <!-- 每天都是以yyyyMMdd来进行命名文件 --> 25 < param name ="RollingStyle" value ="Date" /> 26 <!-- 设定写入的日志格式 --> 27 < layout type ="log4net.Layout.PatternLayout" > 28 < param name ="ConversionPattern" value ="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " /> 29 </ layout > 30 </ appender > 31 <!-- log4net.LogManager.GetLogger("logerror")用这个来选择这种类型 --> 32 <!-- additivity="false"表示错误记录只写入一次 --> 33 < logger name ="logerror" additivity ="false" > 34 <!-- 这个配置文件,如果配置成ALL:表示可以记录 1、信息日志(Info) 2、警告日志(Warn) 3、错误日志(Error) --> 35 < level value ="ALL" /> 36 < appender-ref ref ="ErrorAppender" /> 37 </ logger > 38 < root > 39 </ configSections > 40 < level value ="ALL" /> 41 < appender-ref ref ="ErrorAppender" /> 42 </ root > 43 </ log4net > 44 </ configSections >
2.建立负责日志记录的LogHelper类
1 public class LogHelper 2 { 3 // 通过配置文件的logerror 进行日志写入对象的实例化 4 public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); //选择<logger name="logerror">的配置 5 6//public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); //选择<logger name="loginfo">的配置 7 8static LogHelper() 9 { 10 SetConfig(); 11 } 1213///<summary>14/// 初始化web.config中的<log4net>节点中的配置 15///</summary>16publicstaticvoid SetConfig() 17 { 18 log4net.Config.XmlConfigurator.Configure(); 19 } 2021///// <summary>22///// 设置自定义的Log4Net配置文件 23///// </summary>24///// <param name="configFile"></param>25//public static void SetConfig(System.IO.FileInfo configFile) 26//{ 27// log4net.Config.XmlConfigurator.Configure(configFile); 28//}2930///<summary>31/// 负责将信息日志写入到日志文件 32///</summary>33publicstaticvoid WriteInfo(string msg) 34 { 35//检查信息日志是否允许36if (logerror.IsInfoEnabled) 37 { 38//表示写入信息级别的日志39 logerror.Info(msg); 40 } 41 } 4243///<summary>44/// 负责将警告日志写入到日志文件 45///</summary>46publicstaticvoid WriteWran(string msg) 47 { 48if (logerror.IsWarnEnabled) 49 { 50//表示写入警告级别的日志51 logerror.Warn(msg); 52 } 53 } 5455///<summary>56/// 负责将错误日志写入到日志文件 57///</summary>58publicstaticvoid WriteError(string msg) 59 { 60if (logerror.IsErrorEnabled) 61 { 62//表示写入异常级别的日志63 logerror.Error(msg); 64 } 65 } 66 }
3.建立网站与log4net的联系,使log4net能够自动记录网站在运行时出现的异常
MVC4 版本:
1 /// <summary> 2 /// 新建一个继承HandleErrorAttribute的异常类,重写OnException(ExceptionContext filterContext)方法捕捉网站运行时出现的异常。 3 /// </summary> 4 public class MyExceptionAttribute : HandleErrorAttribute 5 { 6 public override void OnException(ExceptionContext filterContext) 7 { 8 Exception exp = filterContext.Exception; 9 ViewResult view = new ViewResult(); 10 view.ViewName = "/Views/Shared/Error.cshtml"; //新建一个视图对象,当网站出现异常时,跳转到自定义的错误页面11 view.ViewData["Error"] = exp.Message; 12 filterContext.Result = view; 13 filterContext.ExceptionHandled = true; 1415while (exp.InnerException != null) 16 { 17 exp = exp.InnerException; 18 } 1920 LogHelper.WriteError(exp.Message); 21 } 22 }
Asp.Net版本:通过在Global.asax的 Application_Error(Object sender, EventArgs e) 事件中,调用LogHelper类的方法来捕获网站异常记录
1 public class Global : System.Web.HttpApplication 2 { 3 void Application_End(object sender, EventArgs e) 4 { 5// 在应用程序关闭时运行的代码 6 7 } 8 9void Session_Start(object sender, EventArgs e) 10 { 11// 在新会话启动时运行的代码1213 } 1415void Session_End(object sender, EventArgs e) 16 { 17// 在会话结束时运行的代码。 18// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 19// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 20// 或 SQLServer,则不会引发该事件。2122 } 2324///<summary>25/// 程序启动时配置log4net 26///</summary>27///<param name="sender"></param>28///<param name="e"></param>29protectedvoid Application_Start(Object sender, EventArgs e) 30 { 31//若不想把log4net配置文件写在web.config中,也可以另外手动指定。 32//XmlConfigurator.Configure(new FileInfo(HttpContext.Current.Server.MapPath("~/App_Data/log4net.config")));33 } 3435///<summary>36/// 程序出错时通过log4net写日志 37///</summary>38///<param name="sender"></param>39///<param name="e"></param>40protectedvoid Application_Error(Object sender, EventArgs e) 41 { 42 Exception objExp = HttpContext.Current.Server.GetLastError(); 43 LogHelper.WriteLog("\r\n客户机IP:" + Request.UserHostAddress 44 + "\r\n错误地址:" + Request.Url 45 + "\r\n异常信息:" + Server.GetLastError().Message, objExp); 46 } 47 }
4.关闭log4net日志记录功能
在配置文件web.config中找到节点<level value="ALL" />,将value值设置成比ERROR高的等级就不会记录日志。value值对应的等级如下:
OFF
FATAL
ERROR
WARN
INFO
DEBUG
ALL
由下往上,OFF优先级别最高,设置OFF就不再记录日志
原文:http://www.cnblogs.com/feiyuhuo/p/5036257.html
内容总结
以上是互联网集市为您收集整理的日志记录类库log4net的使用总结全部内容,希望文章能够帮你解决日志记录类库log4net的使用总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。