日志框架 - Common Logging和log4net

最近对做过的项目进行整理,发现项目用的日志框架不错,就研究了一下,总结如下步骤。

1,引用程序集,除了引用这三个程序集之外,还要引用log4net.dll程序集,(注意 log4net.dll与Common.Logging.Log4Net1211.dll的版本要一致)
2,修改配置文件App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
        <arg key="level" value="ALL"/>
        <arg key="configType" value="INLINE"/>
      </factoryAdapter>
    </logging>
  </common>
  <log4net>
    <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Debug-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="DEBUG"/>
        <levelMin value="DEBUG"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Error-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="ERROR"/>
        <levelMin value="ERROR"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="InfoLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Info-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="INFO"/>
        <levelMin value="INFO"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="WarnLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Warn-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="WARN"/>
        <levelMin value="WARN"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="FatalLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Fatal-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="FATAL"/>
        <levelMin value="FATAL"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="OperatorAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Operator-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="INFO"/>
        <levelMin value="INFO"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="SystemAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\System-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="INFO"/>
        <levelMin value="DEBUG"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Exception-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="FATAL"/>
        <levelMin value="ERROR"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>
    <root>
      <level value="INFO"/>
      <appender-ref ref="DebugLogFileAppender"/>
      <appender-ref ref="ErrorLogFileAppender"/>
      <appender-ref ref="InfoLogFileAppender"/>
      <appender-ref ref="WarnLogFileAppender"/>
      <appender-ref ref="FatalLogFileAppender"/>
    </root>

    <logger name="Operator" additivity="false">
      <level value="INFO"/>
      <appender-ref ref="OperatorAppender"/>
    </logger>

    <logger name="System" additivity="false">
      <appender-ref ref="SystemAppender"></appender-ref>
    </logger>

    <logger name="Exception" additivity="false">
      <appender-ref ref="ExceptionAppender"></appender-ref>
    </logger>


  </log4net>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.2.15.0" newVersion="1.2.15.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

具体步骤可参考官方文档 Common Logging

3.封装
#region Imports

using Common.Logging;

#endregion

namespace Telewave.CompositeOperations.Common.Log
{
    public enum LogType
    {
        Exception,
        Operator,
        System,
        Debug
    }

    public static class LogManagers
    {
        public static readonly ILog Exception = LogManager.GetLogger(LogType.Exception.ToString());
        public static readonly ILog Operator = LogManager.GetLogger(LogType.Operator.ToString());
        public static readonly ILog System = LogManager.GetLogger(LogType.System.ToString());
        public static readonly ILog Debug = LogManager.GetLogger(LogType.Debug.ToString());
    }
}

4. 调用

5.分析

上图为Debug文件件下的Log文件夹下生成的日志文件,可以看到生成了8个不同类型的文件,因为上面封装时只用到了Exception,System和Operator,所以只有对应的三个文件有内容。一般项目这三个也就够用了。

  <appender name="SystemAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\System-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="INFO"/>
        <levelMin value="DEBUG"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

    <appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Exception-"/>
      <param name="StaticLogFileName" value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="100"/>
      <maximumFileSize value="5MB"/>
      <datePattern value="yyyy-MM-dd".log""/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMax value="FATAL"/>
        <levelMin value="ERROR"/>
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d | %-5p | %m | %t%n"/>
      </layout>
    </appender>

在配置文件中上面这段是配置显示路径文件名和权限的具体参考上面的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值