在logger.config文件中是这样配置的:
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net" > <param name="File" value="logs/log-" /> <param name="RollingStyle" value="Composite"/> <param name="AppendToFile" value="true" /> <param name="DatePattern" value="yyyy-MM-dd".log""/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%M] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="FATAL" /> </filter> </appender>
问题出在输出的文件名上,如果按照上面这样配置,最后输出的日志文件名为"log-"
但如果把 <param name="DatePattern" value="yyyy-MM-dd".log""/> 这一行中的MM改为mm,又可以输出正常的文件名,只是本来的月份变成了分钟。而且除了这种配置方法之外所有的写法全都无效,日志文件名一直是"log-"
我哪里配得不对呢?
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <file value="Logs\" /> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="FATAL" /> </filter> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="yyyyMM".log"" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger %message%newline" /> </layout> </appender>
参考我这个
用你的这段配置是可以的。但是用我的配置文件,第一次记录的文件名为什么不正常的原因还是不清楚
@飞鸟_Asuka: ...<staticLogFileName value="false" />和锁模式你没设置
@李永京: 嗯,设置好以后果然就正常了,非常感谢
<param name="DatePattern" value="yyyy-MM-dd.log"/>
又发现一个问题
我把这一行改为
<param name="DatePattern" value="yyyy-MM-dd-HH-mm".log""/>
第一次运行程序输出的日志文件名是"log-"
过一分钟后第二次运行程序输出的日志文件名就变成了"log-2014-03-26-11-32.log"
这又是为什么呢?为什么第一次运行程序时文件名不正常呢?
而且按照你的答案改了以后文件名变成了"log-2014-03-26-11-32.loA.D"
另外虽然日志文件名对了,但是在同一分钟内多次运行程序没有追加日志?
@Launcher: 我就是看了这篇文章学习的啊,还是不知道为什么第一次运行程序日志文件名会不正常
@飞鸟_Asuka: 升级下你的 log4net 呢!说实话我没用过,我用的是 C++ 版的,对于 RollingFileAppender 没有此方式,我是自己写的 Appender。
@Launcher: 我直接从NuGet上获取的版本1.2.13.0