ASP.NET MVC学习之Log4Net配置(日志记录)

Log4Net配置笔记----

首先,添加对log4net.dll的引用。

在Web.config文件下的Configuration节点下添加Log4Net的配置信息:

 

复制代码
 1 <!--Log4Net配置节点-->
 2   <configSections>
 3     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 4   </configSections>
 5   <log4net>
 6     <!-- Define some output appenders -->
 7     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
 8       <file value="log.txt"/>
 9       <appendToFile value="true"/>
10       <maxSizeRollBackups value="10"/>
11       <maximumFileSize value="10240KB"/>
12       <rollingStyle value="Size"/>
13       <staticLogFileName value="true"/>
14       <layout type="log4net.Layout.PatternLayout">
15         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
16       </layout>
17     </appender>
18     <root>
19       <level value="DEBUG"/>
20       <appender-ref ref="RollingLogFileAppender"/>
21     </root>
22   </log4net>
23   <!--Log4Net配置节点结束-->
复制代码

 

 

添加一个类MyExceptionFilterAttribute.cs:

复制代码
 1 public class MyExceptionFilterAttribute:HandleErrorAttribute
 2 {
 3 
 4         public override void OnException(ExceptionContext filterContext)
 5     {
 6             base.OnException(filterContext);
 7 
 8             //处理错误消息。跳转到一个错误页面
 9             LogHelper.WriteLog(filterContext.Exception.ToString());
10             //页面跳转到错误页面
11             filterContext.HttpContext.Response.Redirect("/Shared/Error");
12      }
13 }
复制代码

在Common类库中添加LogHelper.cs,添加日志写入函数:

1 private static ILog log = LogManager.GetLogger("LogHelper");
2 public static void WriteLog(string errorMsg)
3 {
4             log.Error("\n----------------出错开始-------------------\n"+errorMsg+"\n----------------出错结束-------------------\n");
5 }

在Global.asax文件的Application_Start()方法中加入以下代码:

1 //让Log4Net配置节点起作用,并注册我们的过滤器
2 log4net.Config.XmlConfigurator.Configure();
3 GlobalFilters.Filters.Add(new MyExceptionFilterAttribute());

一切大功告成!

 

posted @   Sunnier  阅读(2104)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示