最近对做过的项目进行整理,发现项目用的日志框架不错,就研究了一下,总结如下步骤。
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>
在配置文件中上面这段是配置显示路径文件名和权限的具体参考上面的官方文档。