我必须做一些愚蠢的事情,但我无法想到它(我相信我的问题的核心是PatternString不是动态的,它在程序启动时会被设置一次)。这是我的lognet.config文件:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="F:\Logs\MonitorService_%date{yyyyMMdd}.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="3000MB" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c :: %m%n" />
</layout>
</appender>
似乎文件以一种搞砸的方式出现:
F:\Logs\MonitorService_20170212.log F:\Logs\MonitorService_20170212.log20170613 F:\Logs\MonitorService_20170212.log20170614
我希望他们每天滚动时出现如下:
F:\Logs\MonitorService_20170612.log F:\Logs\MonitorService_20170613.log F:\Logs\MonitorService_20170614.log
我做错了什么?
答案 0 :(得分:1)
无需将日期放在file
元素的value
中。
datePattern
元素确定在创建新日志文件时应用于日志文件的后缀。
<file type="log4net.Util.PatternString" value="F:\Logs\MonitorService" />
<datePattern value="_yyyyMMdd" />
此处,当前日志文件将被称为“MonitorService”,当它被打开时,该文件将被重命名为“MonitorService_20170622”,并且将创建一个名为“MonitorService”的新文件来存储新的日志消息。