你的位置:首页 > 软件开发 > ASP.net > Log4Net日志分类和自动维护

Log4Net日志分类和自动维护

发布时间:2016-01-07 09:00:13
背景  在程序中,我们调试运行时信息,Log4Net是一个不错的解决方案。不知道是我用的不好,用到最后反而都不想看日志了。原因是因为我n个功能使用的默认的Logger来记录日志,这样以来,所有功能记录的信息都依赖同一个配置,于是所有的信息都在一个文件中,有时候查找起来,极其不方便 ...

背景

  在程序中,我们调试运行时信息,Log4Net是一个不错的解决方案。不知道是我用的不好,用到最后反而都不想看日志了。原因是因为我n个功能使用的默认的Logger来记录日志,这样以来,所有功能记录的信息都依赖同一个配置,于是所有的信息都在一个文件中,有时候查找起来,极其不方便。

  我想,能不能按照功能分类呢?如果通过配置不同的logger,然后功能根据不同的LoggerName加载Ilog实例,是可以做到。但由于这些功能的log配置差异性极小,也许仅仅就是文件名不同。于是想通过代码进行配置。

解决方案

  想来这样的需求应该也算正常,但经过查找,发现在log4j中有相关的咨询,但看不懂,只能自己下载log4net的源码,看看它的运行原理。

  如果我们需要通过配置不同的ILog,流程是这样的,首先要创建一个ILoggerRepository,通过它来进行日志等级的配置,和各种Appender,接着通过LogManager在ILoggerRepository获取一个Ilog对象,就可以写日志了。代码如下:

Log4Net日志分类和自动维护
  <!--RollingFileAppender:输出到文件中-->  <appender name="SysAppender" type="log4net.Appender.RollingFileAppender">   <!--日志的路径-->   <file value="Logs/" />   <!--是否覆盖,默认是追加true-->   <appendToFile value="true"/>   <!--不占用日志文件进程-->   <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />   <rollingStyle value="Composite"/>   <!--文件名称-->   <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern>   <!--设置无限备份=-1 ,最大备份数为1000-->   <param name="MaxSizeRollBackups" value="1000"/>   <!--每个文件的大小-->   <param name="MaximumFileSize" value="500KB"/>   <!--名称是否可以更改 为false为可以更改-->   <param name="StaticLogFileName" value="false"/>   <layout type="log4net.Layout.PatternLayout">    <!--输出格式-->    <conversionPattern value="%n【记录时间】%date%n【描述】%message%n"/>   </layout>  </appender>
Log4Net日志分类和自动维护

  效果则是 日志以小时为单位,每小时最大备份总数为1000,每到500kb后形成日志文件。当随着天数的增加,文件也开始变多,需要我们自己去清理。所以上述配置可以稍微改下:

Log4Net日志分类和自动维护

原标题:Log4Net日志分类和自动维护

关键词:net

net
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。