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

Log4j2:以编程方式在文件名中创建带有时间戳的文件附录

伊光赫
2023-03-14

有可能创建使用[属性]配置添加时间戳到log4j2日志文件:

appender.FILE.type = FILE
appender.FILE.name = FILE
appender.FILE.fileName = file-with-date-${date:yyyy-MM-dd}.log
appender.FILE.layout.type = PatternLayout
appender.FILE.layout.pattern =[%p] %m%n

这将在文件-with-date-2017-11-30中生成日志文件。日志。如何使用编程配置实现相同的行为?这就是我迄今为止所尝试的:

PatternLayout layout = PatternLayout.newBuilder()
            .withConfiguration(ctx.getConfiguration())
            .withPattern("%m%n").build();

FileAppender fileAppender = FileAppender.newBuilder()
        .withLayout(layout)
        .withFileName( "file-with-date-${date:yyyy-MM-dd}.log")
        .withName("pattern")
        .build();

但这会产生以下文件:file-with-date-${date: yyyy-MM-dd}. log。因此,使用属性配置:使用编程创建的appender${date: yyyy-MM-dd}. log忽略当前日期的日志文件。

共有1个答案

易琛
2023-03-14

显然,StrSubstitutor可以在这种情况下提供帮助。

final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
String fileName = config.
              getStrSubstitutor().replace("file-with-date-${date:yyyy-MM-dd}.log");

FileAppender fileAppender = FileAppender.newBuilder()
        .withLayout(layout)
        .withFileName(filename)
        .withName("pattern")
        .build();
 类似资料:
  • 问题内容: 我知道我可以使用Java中的 api 以编程方式创建文件,如下所示: 但是是否有任何 API 可以构建树?(例如Dom之类的api) 我需要这样的东西: 和: 提前致谢。 问题答案: 由于XSLT也是XML,因此您可以简单地使用相同的策略: 等等… 但这不是很优雅。您应该改用库或框架,但应该很容易找到一个谷歌浏览器。

  • 我的组织正在从Log4j1迁移到Log4j2。我们有一个自定义的滚动文件追加器,当应用程序中发生某个事件时,它会在运行时更改它记录到的文件名。这是为了便于在日志目录中查找日志文件而实现的。例如,日志文件目录可能如下所示; mylog-2021-08-02。日志 mylog-2021-08-03.log 特殊事件(mylog-2021-08-03)。日志 mylog-2021-08-04.log m

  • 我有一个数据框架,数据如下。 我想将上面的数据帧写入csv文件,其中将使用当前时间戳创建文件名。 但此代码工作不正常。给出以下错误 有没有更好的方法来实现这一点,使用scala和火花?此外,即使我试图创建文件与时间戳代码是创建一个目录与时间戳和在该目录内的csv与数据创建一个随机名称.我怎么能有时间戳文件名到这些csv文件,而不是创建一个目录?

  • 问题内容: 我知道在Java中不设置创建时间戳记是因为Linux没有它,但是有没有办法在Java中设置文件(Windows)的创建时间戳记?我在这里做了一个基本的修改时间戳编辑器。 问题答案: 我相信您有以下选择: 查找可以执行此操作并且可以从命令行调用的工具。然后,您可以通过Java代码与之交互。 以下来自MSDN File Times的链接显示了任何工具的工作方式-特别注意功能和。 在这里,我

  • 问题内容: 我想以编程方式从应用程序中加载Log4j2 XML配置文件。 试过这个: 还有这个: 但是什么都没有。 问题答案: 自己找到答案。有人可能会觉得有用。