Log4Net 生成多个文件、文件名累加解决方法
Log4Net 生成多个文件、文件名累加解决方法
项目中的WCF服务里采用Log4Net用来记录异常日志,但部署后,生成的日志会出现多个累加文件,如下图:
WCF是寄宿在IIS上,包含了5个SVC服务。打开日志文件,发现记录的引发异常的Thread ID都不一样,猜测是多线程读写日志文件,
配置信息里指定文件的被占用后,重新建立了新的日志文件,删除日志文件也会出现警告信息:
解决方法:
在appender节点里添加:
"lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
lockingModel 属性的详细信息可看 Log4Net SDK 中的描述。
很不解的是:type中 FileAppender+MinimalLock 为何要用 '+' 来做连接符,换成'.'的时候却不行。
完整Log4Net配置信息:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
configSections>
<log4net>
<root>
<level value="ERROR"/>
<appender-ref ref="LogFileAppender"/>
root>
<logger name="wcflog" additivity="true">
<level value="INFO" />
<level value="DEBUG"/>
logger>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<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="RollingStyle" value="Date" />
<param name="MaximumFileSize" value="1000KB"/>
<param name="MaxSizeRollBackups" value="100" />
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="异常开始记录 :"/>
<param name="ConversionPattern" value="%n时间 : %d 线程ID:[%t] %-5p 当前对象名称:%c - %m%n"/>
layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
filter>
appender>
log4net>
configuration>