Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j如何根据日期登录到具有路径的文件_Java_File_Log4j - Fatal编程技术网

Java log4j如何根据日期登录到具有路径的文件

Java log4j如何根据日期登录到具有路径的文件,java,file,log4j,Java,File,Log4j,我正在使用log4j来登录我的java程序。我需要根据日期将内容记录在路径中。例如,我需要一个错误日志作为文件名“error.log”,其路径应该是“log/13/6/11/error.log”当日志记录日期为2013年6月11日时。我如何根据上述要求创建log4j属性文件?log4j提供执行此任务的dailrollingfileappender。您可以配置为打包当前文件,并根据日期和/或时间开始记录到新文件 您的log4j.properties看起来像(除其他类似于模式的内容外) 昨天的文件应

我正在使用log4j来登录我的java程序。我需要根据日期将内容记录在路径中。例如,我需要一个错误日志作为文件名“error.log”,其路径应该是“log/13/6/11/error.log”当日志记录日期为2013年6月11日时。我如何根据上述要求创建log4j属性文件?

log4j
提供执行此任务的
dailrollingfileappender
。您可以配置为打包当前文件,并根据日期和/或时间开始记录到新文件

您的
log4j.properties
看起来像(除其他类似于模式的内容外)

昨天的文件应该是
app.log.2013-06-10
,而今天的文件应该是
app.log

将文件命名为
log/13/6/11/error.log
是不可能的,因为文件名不能包含路径分隔符。您可以考虑一些类似于<代码> App.Logy13-611yOrr.Log< <代码>为

log4j.appender.Appender2.File=app.log
log4j.appender.Appender2.DatePattern='_'yy-MM-dd'_error.log'

您当前的文件将命名为
app.log

,这是不支持开箱即用的afaik。您可以编写自己的appender或使用cron作业触发的简单脚本移动文件

@sajith文件名不能包含路径分隔符。检查更新。我需要保存在给定的路径,而不是文件名啊,很抱歉误解了你的问题。我也有一个解决办法。稍后再查看。Log4j中的滚动附加器都不会滚动日志文件位置。它们只支持滚动日志文件。因此,您有两个选项:(1)以编程方式Init Log4j,使您能够在每次应用程序重新启动时滚动日志位置(如果日期已更改)(2)以编程方式Init Log4j,并实现您自己的自定义滚动附加器,使您能够每天滚动日志位置(无需重新启动应用程序)。简而言之,对于您想要实现的目标,没有纯粹的log4j属性解决方案。你觉得这样舒服吗?您必须从引导应用程序的类初始化Log4j。
log4j.appender.Appender2.File=app.log
log4j.appender.Appender2.DatePattern='_'yy-MM-dd'_error.log'