gpt4 book ai didi

java - 将变量添加到所有日志消息中

转载 作者:行者123 更新时间:2023-12-02 01:22:59 24 4
gpt4 key购买 nike

我正在使用 org.slf4j:slf4j-api:1.7.26 从 Java 应用程序写入日志。我的 log4j.properties 看起来像:

log4j.rootLogger=WARN, console

# add a ConsoleAppender to the logger stdout to write to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
# use a simple message format
log4j.appender.console.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.console.layout.ConversionPattern={\
"time":"%d{ISO8601}",\
"level":"%p",\
"class":"%c{1.}",\
"message":"%m",\
"thread":"%t",\
"fileName":"PLACEHOLDER_FILE_NAME"\
}%n

我需要将 PLACEHOLDER_FILE_NAME 替换为在启动时作为 CLA 馈入应用程序的文件的名称。而是如何做到这一点?我研究过 java.util.logging.Formatter 但我不相信这是最好的方法,因为它似乎覆盖了 log4j.properties。

最佳答案

您可以读取系统属性,例如。 log4j 配置中的 ${file.name}:然后,您只需在 log4j 读取此配置之前设置此属性即可,例如。在启动时将其指定为 -Dfile.name=filenamePath

log4j.rootLogger=WARN, console

# add a ConsoleAppender to the logger stdout to write to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
# use a simple message format
log4j.appender.console.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.console.layout.ConversionPattern={\
"time":"%d{ISO8601}",\
"level":"%p",\
"class":"%c{1.}",\
"message":"%m",\
"thread":"%t",\
"fileName":"${file.name}"\
}%n

关于java - 将变量添加到所有日志消息中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57356972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com