这是我的log4net配置,翻转日志文件创建错误的扩展名。使用log_debug.txt创建的第一个文件和使用log_debug.txt.1创建的翻转文件。但理想情况下应该是log_debug.1.txt。
我使用preserveLogFileNameExtension值为true,但似乎无效。你能检查一下,如果有什么不对的地方让我知道吗?
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
<file value=".\logs\log_debug.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="2MB" />
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="true" />
<layout type="propertyPatternLayout">
<conversionPattern value="%date || Thread=%thread" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
&#13;
答案 0 :(得分:1)
我的第一个答案(下面)基于log4net的v1.2.10,我被轻轻地推向了v1.2.13版本,其中 包含preserveLogFileNameExtension
。某些测试确认该属性也按预期工作,并且不依赖于staticLogFilename
属性。
我认为OP使用的是以前版本的log4net,它不包含该属性,因此展示了下面描述的行为(make3和Sivakumar评论是现场IMO)
再次感谢我将我从1.2.10的沟槽中唤醒。
首先要做的是:vanilla log4net中的preserveLogFileNameExtension
(或任何appender)没有RollingFileAppender
属性(我正在查看版本1.2.10.0)。大多数log4net组件将使用您发送的任何属性配置而不会抱怨,但它不一定转换为组件中的行为
当滚动大小(或复合)时,会发生的事情是翻转是硬编码的,以使用迭代编号对日志文件进行后缀。您将始终获得一个“file.log.n”,其中n与下一个文件编号匹配(这取决于您的maxSizeRollBackups
和countDirection
值)。使用当前RollingFileAppender
无法避免这种情况(请查看RollingFileAppender.RollOverRenameFiles
方法)
怎么办?您可以决定按日期滚动。在这种情况下,可以使用datePattern
属性。滚动时datePattern
会附加到文件名,因此您可以使用
<file value="file.log" />
<datePattern value=".yyyy-MM-dd-hh-mm-ss'.log'" />
将保留扩展并创建类似file.log.2014-12-11-11-47-54.log
的文件(请参阅文件名中的原始.log扩展名)。但是你正在失去尺寸限制方面。如果你去复合材料,你会遇到同样的问题;由于RollOverSize
始终在RollOverDate
之后出现,因此会出现数字前缀。
您还可以决定使用您想要/需要的命名约定推出自己的appender(啊啊)。您甚至可以尝试从vanilla RollingFileAppender
继承并仅覆盖必要的方法。 AdjustFileBeforeAppend
是虚拟的,是所有翻转需求的起点;您可以尝试例如撤消对RollOverDate
和RollOverSize
的调用以使用复合模式...