使用静态文件扩展名的Log4Net复合RollingFileAppender

4
当前版本的Log4net是否有一种创建具有复合滚动样式的RollingFileAppender的方法,其中滚动文件始终保留给定的扩展名(在我的情况下为.log)?
我想要的格式示例:
MyLog.log MyLog.2011-04-10.1.log MyLog.2011-04-10.2.log MyLog.2011-04-10.3.log
我发现这篇文章中提到了“PreserveLogFileNameExtension”属性,但它没有包含在官方二进制文件中。这仍然是这种情况吗?
如果是:有人能解释一下为什么这个属性仍然不是Log4Net的正式部分吗?我有点怀疑使用自定义构建,但也许我不应该?
我还很想知道为什么默认功能不保留文件扩展名。我不明白为什么让所有日志文件具有不同的扩展名会对用户有所帮助。

编辑:通过以下步骤解决了问题:
1:下载并构建log4net源代码
2:应用这些补丁:https://issues.apache.org/jira/browse/LOG4NET-64
3:在配置中将PreserveLogFileNameExtension设置为“true”。

3个回答

4

你尝试过这些参数吗?

<file value="log-files\MyLog" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd'.log'" />
<param name="StaticLogFileName" value="false" />

它会保留文件扩展名,但会在每个文件名中添加日期,如下所示。
MyLog2011-05-16.log 
MyLog2011-05-17.log 
MyLog2011-05-18.log 
MyLog2011-05-19.log 
也许可以将其与大小滚动结合使用?

2
情况没有改变。log4net没有更新的版本。我不太清楚是否会有新版本发布...
我认为你不需要过于担心使用自定义构建。测试你的软件,如果它能正常工作就足够了。
编辑:有一个新版本,应该包括LOG4NET-64。当然,你仍然可以坚持使用自定义构建。

感谢您的快速回复!我已经创建了一个自定义构建,并将“PreserveLogFileNameExtension”属性设置为true。这似乎对大小滚动起作用,但不适用于日期。现在,它会滚动到“MyLog.1.log”,如所需,但是当它在日期上滚动时,我得到的是“MyLog.1.log04-11-2001”,这与我之前的情况差不多。还有什么提示可以让我获得“MyLog.1.04-11-2011.log”?我尝试使用“<datePattern value =“yyyy-MM-dd'.log'”/>”的技巧,但与PreserveLogFileNameExtension结合使用时它没有起作用;由于某种原因,只有最后一个日志文件被保留了。 - Knut Marius
也许这个功能没有被正确地实现... 如果我是你,我会尝试在源代码中自己修复它(如果我真的需要它) - Stefan Egli
当我应用了这个页面上的补丁时,它按照我的期望工作了!https://issues.apache.org/jira/browse/LOG4NET-64 - Knut Marius

0
我正在使用这个配置:
<file value="" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.log'" />
<staticLogFileName value="false" />

获得类似以下文件名:
  • 20111101.log
  • 20111102.log
  • 20111103.log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接