EF+MVC配置Log4Net,终极详解

测试demo源码,请git
here: https://github.com/net-web/MemCacheExample.git
今天,2017年10月24日。 我还在佛山移动,开发服务订单中心系统。
里面有一个需求:优化日志。而且移动客户指明使用Log4Net。
我看来Log4Net的两项显著的有点:可分“错误等级”记录、滚动、配置化(非常方便)。
其实我们的优化仅仅是:配置灵活。应为没有多少日志需要记录,更不用说滚动日志了。


第一份配置:按日志文件大小、文件个数(滚动日志)配置。
1、新建项目,添加对log4net.dll的引用,使用release版,不要使用debug版....
2、添加配置,在web.config,要做控制台测试demo是在app.config里面。。(别看这个是很显然的问题,我就在配置MemCache,分装方法的测试的时候,出现了这么个问题,当时就忘记在app.config里面配置,不过经过调试,MemCache初始化出错,看出问题,当时觉得很惊讶,怎么会忘记这回事..)
3、在程序入口加入

log4net.Config.XmlConfigurator.Configure();

滚动日志具体配置信息:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <!-- Define some output appenders -->
    <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>
</configuration>

按日期,并且是按照日期,新建文件夹来配置。(移动客户要求按照日期新建文件夹存储日志文件,定义做打包处理)

<log4net>
        <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
        <!-- Set root logger level to ERROR and its appenders -->
        <root>
      <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
            <level value="ERROR"/>
            <appender-ref ref="SysAppender"/>
        </root>
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="WebLogger">
            <level value="ERROR"/>
        </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='yyyy/MM/dd/"logfile.log"' />
            <param name="StaticLogFileName" value="false" />
      <!--日志格式-->
            <layout type="log4net.Layout.PatternLayout,log4net">
                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
            </layout>
        </appender>
    </log4net>

等级:(高-->低)OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL
当然不能忘记添加一个name为log4net的section

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    
  </configSections>

当然,Log4Net还可以保存至数据库、发邮件..这些配置,这次项目没有使用到,我也不单独做demo了。


标签: log4net, ef+mvc

添加新评论