Log4net 集成到MVC+EF框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4net 集成到MVC+EF框架相关的知识,希望对你有一定的参考价值。

前提引用Log4Net.dll文件

1、

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]

上述代码写到AssemblyInfo.cs文件中

2、Global.asax文件中,Application_Start方法中添加对Log4Net的初始化代码如下:

string l4net = Server.MapPath("~/Web.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(l4net));

3、配置web.config文件,内容如下,部分配置说明,详见注释

 1 
<!--该项配置必须放在configuration的第一个节点的位置上-->
<configSections> 2 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 3 </configSections> 4 5 <log4net debug="true"> 6 <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> 7 <filter type="log4net.Filter.LevelMatchFilter"> 8 <levelToMatch value="ERROR" /> 9 </filter> 10 <filter type="log4net.Filter.DenyAllFilter" /> 11 <!--日志文件名开头--> 12 <file value="..\\Logs\\Error\\" /> 13 <!--是否追加到文件--> 14 <appendToFile value="true" /> 15 <!--混合使用日期和文件大小变换日志文件名--> 16 <rollingStyle value="Composite" /> 17 <!--最大变换数量--> 18 <maxSizeRollBackups value="10"/> 19 <!--最大文件大小--> 20 <maximumFileSize value="500KB"/> 21 <!--日期的格式 StaticLogFileName的值如果为true, 22 则当前日志文件(相对于历史日志文件而言)的文件名只取File参数。 23 如果为false,则文件名取File+DatePattern。--> 24 <staticLogFileName value="false" /> 25 <!--下面格式 日志可以按照月份归档--> 26 <datePattern value="yyyy-MM/yyyy-MM-dd.‘log‘" /> 27 <layout type="log4net.Layout.PatternLayout"> 28 <conversionPattern value="%date %logger : %message%newline" /> 29 </layout> 30 </appender> 31 <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> 32 <filter type="log4net.Filter.LevelMatchFilter"> 33 <levelToMatch value="INFO" /> 34 </filter> 35 <!--不符合info条件的日志,不做输出--> 36 <filter type="log4net.Filter.DenyAllFilter" /> 37 <!--日志文件名开头--> 38 <file value="..\\Logs\\Info\\" /> 39 <!--是否追加到文件--> 40 <appendToFile value="true" /> 41 <!--混合使用日期和文件大小变换日志文件名--> 42 <rollingStyle value="Composite" /> 43 <!--最大变换数量--> 44 <maxSizeRollBackups value="10"/> 45 <!--最大文件大小--> 46 <maximumFileSize value="500KB"/> 47 <!--日期的格式--> 48 <staticLogFileName value="false" /> 49 <datePattern value="yyyy-MM-dd" /> 50 <layout type="log4net.Layout.PatternLayout"> 51 <conversionPattern value="%date %logger : %message%newline" /> 52 </layout> 53 </appender> 54 <root> 55 <level value="All" /> 56 <appender-ref ref="ErrorAppender" /> 57 <appender-ref ref="InfoAppender" /> 58 </root> 59 </log4net>

 

4、添加LogHelper.cs文件

 1  public class LogHelper
 2     {
 3         public static void debug(string message)
 4         {
 5             log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
 6             if (log.IsDebugEnabled)
 7             {
 8                 log.Debug(message);
 9             }
10             log = null;
11         }
12 
13         public static void error(string message)
14         {
15             log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
16             if (log.IsErrorEnabled)
17             {
18                 log.Error(message);
19             }
20             log = null;
21         }
22 
23         public static void fatal(string message)
24         {
25 
26             log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
27             if (log.IsFatalEnabled)
28             {
29                 log.Fatal(message);
30             }
31             log = null;
32         }
33         public static void info(string message)
34         {
35             log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
36             if (log.IsInfoEnabled)
37             {
38                 log.Info(message);
39             }
40             log = null;
41         }
42 
43         public static void warn(string message)
44         {
45             log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
46             if (log.IsWarnEnabled)
47             {
48                 log.Warn(message);
49             }
50             log = null;
51         }
52     }

至此,就可以开启你的Log4net之旅

以上是关于Log4net 集成到MVC+EF框架的主要内容,如果未能解决你的问题,请参考以下文章

ASP MVC 数据库优先 - 刷新 EF 实体框架时丢失所有验证

转:asp.net mvc ef 性能监控调试工具 MiniProfiler

使用 EF 框架的 .NET 核心 MVC - 将数据从一个控制器传递到另一个控制器

ASP.NET MVC和EF集成AngularJS开发

MVC5+EF+AutoFac+AutoMapper轻型架构

[ASP.NET MVC]: - EF框架学习手记