导航

简单便捷的使用Log4Net

Posted on 2013-07-05 13:48  杨彬Allen  阅读(225)  评论(0)    收藏  举报

之前做log4net,都是在app.config中配上一大段,然后每个类中都写上一句public readonly log4net.ILog log = log4net.LogManager.GetLogger("XXProject"));

这样做的缺点有两处:

1、繁,每个Project都要配置app.config!

2、通用方法中的Log因为写死的“XXProject”都会记到同一个日志中去,典型的就是Business不好配Log!

 

其实如果要求不高可以统一管理Log4Net,在类似Common的Project中新建一个类,在其中加入如下。这样代码都动态记到不同文档中去了!

    public class Log
    {
        /// <summary>
        /// 标准日志
        /// </summary>
        public static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Log));
    }

 另外在Common的app.config中配置唯一一次app.config。

<?xml version="1.0"?>
<configuration>
  <configSections>
    <!-- log4net的定义 -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <appSettings>
    
  </appSettings>
  <log4net>
    <!-- 日志文件部分log输出格式的设定 -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=""/>
      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="10"/>
      <param name="MaximumFileSize" value="5MB"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/>
      <param name="RollingStyle" value="Date"/>

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="时间:%d{yyy-MM-dd HH:mm:ss} %n级别:%level %n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
      </layout>
    </appender>

    <logger name="Log"/>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

最后只要调用就行了。