当前位置: 首页 > 知识库问答 >
问题:

如何将log4j2所写的文件的命名推迟到文件被打开的时候?

邹驰
2023-03-14

我正在尝试让log4j2写入名为yyyymmdd-hhmms.log的日志文件,但要等到我们有一个好的系统时间(>1986年)才开始写入文件。我有一个应用程序在一个系统上运行,启动后需要一段时间才能得到正确的时间;在此之前,系统会认为它回到了1970年,所以写一个带有错误日期的日志文件是没有意义的。

使用自定义筛选器,我可以让FileAppender在设置系统时间之前不写入任何事件。我可以让FileAppender在自定义筛选器(createOnDemand=“true”)传递第一个事件之前不打开文件。在运行时使用log4j2-assigning file appender filename,我可以得到名为yyyymmdd-HHMMSs.log的文件,但是配置XML中的yyyymmdd-HHMMSs.log似乎是在Log4J2初始化时(而不是在文件打开时)得到评估的,所以我的文件名仍然是19700101-000000.log。

有没有一种方法可以推迟对log4j2文件appender的名称的计算,直到文件实际打开?或者,是否有一种使用RollingFileAppender来完成此操作的秘密方法?(我看不出有什么方法可以在那里更改当前文件的文件名,只是旧文件)

我可以做一个自定义的附加器(fileappender/fileManager不是那么长),但是如果可能的话,我会尽量避免这样做。

共有1个答案

韩鸿
2023-03-14

在log4j2邮件列表上得到了答案。感谢Ralph Goers(log4j2开发人员之一)。使用筛选的RoutingAppender来延迟文件Appender的创建。

https://lists.apache.org/thread.html/rbf909f616a053f8c34733801b4977f389a31169ffcdd3748d7873df%40%3clog4j-user.logging.apache.org%3e

 类似资料:
  • 错误是 我将下面的librairies导入到JMeter中: Apache POI 3.17 Apache POI-OOXML 3.17 Apache Commons IO 2.6 OOXML模式1.3 XMLBeans-2.3.0.jar Commons-Collections4-4.1.jar 提前多谢 致以最诚挚的问候 更新1

  • 问题内容: 我必须递归重命名完整的文件夹树,以便任何地方都没有大写字母(这是C ++源代码,但这无关紧要)。 忽略CVS和Subversion版本控制文件/文件夹的加分点。首选方法是shell脚本,因为shell应该在任何Linux机器上都可用。 关于文件重命名的细节,有一些有效的论据。 我认为小写相同的文件应被覆盖;这是用户的问题。在忽略大小写的文件系统上签出时,它也会用后者覆盖第一个文件系统。

  • 我用Flume收集推文,并存储在HDFS上。收集部分工作正常,我可以在我的文件系统中找到我所有的推文。 正如我们所看到的,推文存储在128MB的块中,但只使用几个Ko,这是HDFS的正常行为,如果我错了,请纠正我。 然而,我如何在一个文件中获取所有不同的推文? 这是我使用以下命令运行的conf文件: flume ng agent-n TwitterAgent-f./my flume files/t

  • 问题内容: 我知道我们应该在问题中添加一些代码,但是我非常傻眼,无法束手无策,也找不到任何可循的例子。 基本上,我想打开文件 C:\ A.txt ,其中已经包含内容,并在末尾写一个字符串。基本上是这样的。 文件A.txt包含: 我想打开它并在末尾写Sue,所以文件现在包含: 抱歉,没有代码示例,今天早上我的大脑死了。 问题答案: 请搜索Larry Page和Sergey Brin向全世界发布的Go

  • 我有这个附件 当达到5 MB并且/var/log/mylog上没有空间时,我会收到错误,如果我在之后留出空间,记录器不会再次尝试重命名文件。有什么办法可以解决吗? 我使用log4j22.2

  • 问题内容: 我从Apache得到以下错误 [2011年3月19日23:10:50周六] [警告] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的’/common/configs/config_templates.inc.php’(include_path =’ 。:/ usr / share / pear:/ us