设置Log4j以使用以下模式需要哪些配置值?
的 MyApp的-Mon.log
MyApp的-Tue.log
MyApp的-Wed.log
等
每个文件都包含日志日志。
这听起来很容易与Log4j的DailyRollingFileAppender有关,但我遇到了麻烦。
这是我当前的配置;
<appender name="daily-file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="info"/>
<param name="DatePattern" value="'-'EE'.log'"/>
<param name="file" value="MyApp"/>
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{EEE MMM dd hh:mm:ss zzz yyyy} %-5p %l - %m%n"/>
</layout>
</appender>
我在this博客文章中建立了这个配置,但它并没有像他描述的那样表现。该日志创建为MyApp,没有扩展名。
有人可以帮助我吗?
答案 0 :(得分:1)
我在这篇博客文章中建立了这个配置,但它并没有像他描述的那样表现。该日志创建为MyApp,没有扩展名。
这就是你告诉Log4J这行:
<param name="file" value="MyApp"/>
Log4J使用此选项的值作为日志文件名,并且仅在发生翻转时应用模式,如documented:
例如,如果设置了“文件”选项 到/foo/bar.log和DatePattern 设置为'。'yyyy-MM-dd,2001-02-16 at 午夜,记录文件 /foo/bar.log将被复制到 /foo/bar.log.2001-02-16并记录 2001-02-17将继续进行 /foo/bar.log直到它翻过来 第二天。
所以一切看起来都很正常。
要获得所需的行为,您可以编写自己的Appender
。詹姆斯·斯托弗(James Stauffer)看起来非常相似(见this answer),但他延伸FileAppender
。尽管如此,应该很容易使他的工作适应DailyRollingFileAppender
子类。
答案 1 :(得分:0)
当前日志文件名为MyApp,然后明天它将被Myapp-yesterday重命名,依此类推
但当前日志始终是默认名称。
答案 2 :(得分:0)
查看the JavaDocs for the DailyRollingFileAppender,他们列出的所有示例都有特定的数字日期模式,而不是日期模式。您是否尝试过使用其中一个示例有效?如果是这样,你的则没有,那么我假设DailyRollingFileAppender不支持使用包含'E'的日期模式(星期几)。
答案 3 :(得分:0)
回应你对Pascal答案的评论:
ln -s MyApp.log MyApp-NOW.log
会有效吗?您的旧日志查看器将通过符号链接显示MyApp-NOW.log,log4j可以在午夜将MyApp.log转存到MyApp-TUE.log。