Log4Net 配置

用Log4写日志是相当方便。基本上利用配置文件修改就可达到想要的效果。

最近对于配置Log4遇到了一些问题。在这里进行一下汇总。

1.如何想LOG4的配置信息移到一个单独的XML下

默认LOG4的配置文件是写在App.config或web.config下的。而如果这2个文件已经存在了很多的配置信息。这样对于修改无非是一个很头疼的事情。所以将其移动到一个单独的文件下,独立起来。方便配置和管理

有2种方式,具体如下:

1.将配置文件写到AssemblyInfo.cs下。

[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Log.xml", Watch = true)]

2.用代码指定配置文件(推荐)

log4net.Config.XmlConfigurator.Configure(new FileInfo("Log.xml"));
 

2.如何将不同级别的日志写入不同的文件

这里主要就是配置文件在发挥作用了。Log4默认是5个级别,根据设置不同logger中的level来控制每个级别走不同的配置即可,具体如下配置
 <!--调试-->
  <logger name="DebugLogger">
    <level value="DEBUG"/>
    <appender-ref ref="DebugLog" />
  </logger>
<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">

这只是其中之一。最后会放出整个配置

3.如何解决单个日志过大问题

由于长期以来所有日志都写到一个文件,造成这个文件越来越大,不方便查看问题,光打开这个文件都是一个问题。所以可以采用按日期来分割日志,不同的日期分别写入到不同的文件中。设置

<file value="Log\DEBUG\Debug_Log" />
<DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
<param name="StaticLogFileName" value="false" />
就可以按照 yyyyMMdd 的文件来分割了,当然如果日期指定到分钟,那就是按分钟进行分割。
不过这样做还存在一个问题,就是如果当天的日志就很大,那么还是没解决最初的问题。所以只好按照大小进行分割
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="50MB"/>
在此遇到一个问题就是<param name="RollingStyle" value="Date"/> 这一项必须删除才可以 对大小进行限制
最后放出整个配置文件
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <root>
    <!-- OFF FATAL ERROR WARN INFO DEBUG ALL-->
    <level value="ALL" />
  </root>

  <!--致命错误-->
  <logger name="FatalLogger">
    <level value="FATAL"/>
    <appender-ref ref="FatalLog" />
  </logger>
  <appender name="FatalLog" type="log4net.Appender.RollingFileAppender">
    <!--日志的路径-->
    <file value="Log\FATAL\Fatal_Log" />
    <!--是否覆盖,默认是追加true-->
    <appendToFile value="true"/>
    <!--滚动类型-->
    <!--<param name="RollingStyle" value="Date"/>-->
    <!--文件名称-->
    <DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
    <!--设置无限备份=-1-->
    <maxSizeRollBackups value="-1"/>
    <!--每个文件的最大50MB-->
    <maximumFileSize value="50MB"/>
    <!--名称是否可以更改为false为可以更改-->
    <param name="StaticLogFileName" value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t]  %c  %p %n%m%n" />
    </layout>
  </appender>

  <!--运行错误-->
  <logger name="ErrorLogger">
    <level value="ERROR"/>
    <appender-ref ref="ErrorLog" />
  </logger>
  <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
    <!--日志的路径-->
    <file value="Log\ERROR\Error_Log" />
    <!--是否覆盖,默认是追加true-->
    <appendToFile value="true"/>
    <!--滚动类型-->
    <!--<param name="RollingStyle" value="Date"/>-->
    <!--文件名称-->
    <DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
    <!--设置无限备份=-1-->
    <maxSizeRollBackups value="-1"/>
    <!--每个文件的最大50MB-->
    <maximumFileSize value="50MB"/>
    <!--名称是否可以更改为false为可以更改-->
    <param name="StaticLogFileName" value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t]  %c  %p %n%m%n" />
    </layout>
  </appender>

  <!--警告-->
  <logger name="WarnLogger">
    <level value="WARN"/>
    <appender-ref ref="WarnLog" />
  </logger>
  <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
    <!--日志的路径-->
    <file value="Log\WARN\Warn_Log" />
    <!--是否覆盖,默认是追加true-->
    <appendToFile value="true"/>
    <!--滚动类型-->
    <!--<param name="RollingStyle" value="Date"/>-->
    <!--文件名称-->
    <DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
    <!--设置无限备份=-1-->
    <maxSizeRollBackups value="-1"/>
    <!--每个文件的最大50MB-->
    <maximumFileSize value="50MB"/>
    <!--名称是否可以更改为false为可以更改-->
    <param name="StaticLogFileName" value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t]  %c  %p %n%m%n" />
    </layout>
  </appender>

  <!--信息-->
  <logger name="InfoLogger">
    <level value="INFO"/>
    <appender-ref ref="InfoLog" />
  </logger>
  <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
    <!--日志的路径-->
    <file value="Log\INFO\Info_Log" />
    <!--是否覆盖,默认是追加true-->
    <appendToFile value="true"/>
    <!--滚动类型-->
    <!--<param name="RollingStyle" value="Date"/>-->
    <!--文件名称-->
    <DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
    <!--设置无限备份=-1-->
    <maxSizeRollBackups value="-1"/>
    <!--每个文件的最大50MB-->
    <maximumFileSize value="50MB"/>
    <!--名称是否可以更改为false为可以更改-->
    <param name="StaticLogFileName" value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t]  %c  %p %n%m%n" />
    </layout>
  </appender>

  <!--调试-->
  <logger name="DebugLogger">
    <level value="DEBUG"/>
    <appender-ref ref="DebugLog" />
  </logger>
  <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
    <!--日志的路径-->
    <file value="Log\DEBUG\Debug_Log" />
    <!--是否覆盖,默认是追加true-->
    <appendToFile value="true"/>
    <!--滚动类型-->
    <!--<param name="RollingStyle" value="Date"/>-->
    <!--文件名称-->
    <DatePattern value="-yyyyMMdd&quot;.log&quot;"/>
    <!--设置无限备份=-1 ,最大备份数为1000-->
    <maxSizeRollBackups value="-1"/>
    <!--每个文件的最大50MB-->
    <maximumFileSize value="50MB"/>
    <!--名称是否可以更改为false为可以更改-->
    <param name="StaticLogFileName" value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t]  %c  %p %n%m%n" />
    </layout>
  </appender>
</log4net>
 
posted @ 2011-09-22 10:02  阳光下的风  阅读(269)  评论(0)    收藏  举报