use*_*392 5 log4net log4net-configuration log4net-appender
this is my log4net configuration, the rollover log file is created wrong extension. The first file created with name of log_debug.txt and the rollover file created with log_debug.txt.1. but ideally it should be log_debug.1.txt.
I used preserveLogFileNameExtension value to be true, but it seems not working. Can you please check and let me know if anything wrong?
<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>Run Code Online (Sandbox Code Playgroud)
我的第一个答案(如下)基于 log4net 的 v1.2.10,我被轻轻地催促到 v1.2.13 版本,其中包含preserveLogFileNameExtension. 一些测试证实该属性也按预期工作,并且不依赖于该staticLogFilename属性。
我认为 OP 使用的是 log4net 的早期版本,它不包含该属性,因此表现出下面描述的行为(IMO 上making3 和 Sivakumar 评论就在现场)
再次感谢您将我从 1.2.10 的困境中唤醒。
首先,在 vanilla log4net 中没有preserveLogFileNameExtensiona (或任何附加程序)的属性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'" />
Run Code Online (Sandbox Code Playgroud)
这将保留扩展名并创建一个类似的文件file.log.2014-12-11-11-47-54.log(请参阅文件名中的原始 .log 扩展名)。但你正在失去尺寸限制。如果你选择 Composite,你也会遇到同样的问题;因为RollOverSize总是出现在RollOverDate数字前缀之后。
您还可以决定使用您想要/需要的命名约定来推出(啊啊)您自己的附加程序。您甚至可以尝试从普通继承RollingFileAppender并仅覆盖必要的方法。AdjustFileBeforeAppend是虚拟的,是所有展期需求的起点;例如,您可以尝试反转调用RollOverDate并RollOverSize使用复合模式...