Common.Logging+(log4net/NLog/)
common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志、NLog等。
Common.Logging可以通过修改配置,更换不同的日志实现类,而不需要修改任何代码。
.net 项目使用CommonLogging:
1、添加必要的程序集:Common.Logging.dll、Common.Logging.Core.dll、Common.Logging.log4net1215.dll、log4net.dll
其中需要特别注意Common.Logging.log4net1215.dll、log4net.dll的版本必须匹配,建议使用VS的NuGet添加引用,添加时有详细的说明。
2、写配置文件
在app.config的配置文件修改:在configSections中添加
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
在根目录添加:即在configuration添加如下信息:
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4Net1215">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="log4net.config" />
</factoryAdapter>
</logging>
</common>
添加log4net.config文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<param name="File" value="..\\Log\\" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd.'log'"/>
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="时间:%date 线程名:[%thread] 消息等级:%-5level 日志器:%logger %ndc 类名:%C 方法名:%M 所在行:%line %n[message]%message %exception %newline" />
</layout>
<fileter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR"/>
<levelMax value="FATAL"/>
</fileter>
</appender>
</log4net>
在项目的AssemblyInfo.cs文件中添加:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在使用的时候添加代码:
//添加引用:
using Common.Logging;
//代码
public static ILog logObj = Common.Logging.LogManager.GetLogger<PeiYangXiangFrm>();
logObj.Trace("This is a Trace Log!");