【问题标题】:Dynamic fileName File Appender log4j2动态文件名文件追加器 log4j2
【发布时间】:2021-09-17 02:01:05
【问题描述】:

我想动态设置 FileAppender 将写入的文件名。 我将提供我的配置示例。

log4j2.yml

...

  Appenders:

    Console:

      name: Console_Appender

      target: SYSTEM_OUT

      PatternLayout:

        pattern: "[%-5level] %d{dd-MM-yyyy HH:mm:ss.SSS} [%t] %c{1} - %msg%n"

    File:

      name: File_Appender

      fileName: ${log-path}/fileLog.log


      PatternLayout:

        pattern: "[%-5level] %d{dd-MM-yyyy HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
...

我想要 fileLog${javaVariable}.log 其中 javaVariable 是动态的。 这可能吗?

谢谢你:)

编辑:要清楚 我需要如果我用@Around注释拦截的方法被user0调用,我必须在“user0.log”中写入(单个)日志; if 由 user1 -> "user1.log" 调用。 我可以随时创建用户,所以我需要一个动态文件名。

【问题讨论】:

  • 我认为如果您更具体地了解“动态”可能会有所帮助。您的意思是“确定为要运行的应用程序的参数”或“在运行时在代码中设置”......
  • @g00se Dynamic = 在运行时在代码中设置
  • @LeiYang 我需要使用 yml :( 但是,我已经使用了 ${sys:logFile} 和 java System.setProperty("logFile", "theFileName") 但不起作用。你确定它适用于 yml 吗?
  • 我认为 yaml 是一样的。 yaml 中的${logFile}java -DlogFile=xyz 怎么样?

标签: java yaml log4j2


【解决方案1】:

解决方案是 MDC。 我使用了this guide,您可以在其中使用路由根据线程上下文中的变量选择文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2017-06-25
    相关资源
    最近更新 更多