将变量添加到所有日志消息中
Adding a variable into all log messages
我正在使用 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
.
您可以阅读系统 属性 例如。 ${file.name}
在 log4j 配置中:
然后,你只需要在 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
我正在使用 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
.
您可以阅读系统 属性 例如。 ${file.name}
在 log4j 配置中:
然后,你只需要在 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