【问题标题】:How to use multiple appenders of same type with one logger using properties file?如何使用属性文件将多个相同类型的附加程序与一个记录器一起使用?
【发布时间】:2020-02-19 03:39:03
【问题描述】:

我有一个简单的问题,但我想不通。使用 Log4j2 属性文件格式的单个记录器使用多个相同类型 (RollingFile) 的附加程序的正确语法是什么?

作为背景,我使用的是使用 pax 日志记录的 Karaf 4.2.7。我的日志配置文件是属性格式。

log4j2.appender.fileapp1.type = RollingRandomAccessFile
log4j2.appender.fileapp1.name = FileApp1
...

log4j2.appender.fileapp2.type = RollingRandomAccessFile
log4j2.appender.fileapp2.name = FileApp2
...

log4j2.logger.myloggername.name = com.acme
log4j2.logger.myloggername.appenderRef.RollingFile.ref = FileApp1, FileApp2

将两个附加程序放在用逗号分隔的最后一行是行不通的。如果我只有一个附加程序或另一个附加程序,它就可以工作。我也试过了

log4j2.logger.myloggername.appenderRef.RollingFile.ref = [FileApp1, FileApp2]

log4j2.logger.myloggername.appenderRef.RollingFile.ref = {FileApp1, FileApp2}

log4j2.logger.myloggername.appenderRef.RollingFile.ref = [{FileApp1}, {FileApp2}]

这些都不起作用。我似乎无法在网上找到任何有关如何执行此操作的示例。

【问题讨论】:

  • 为什么不对配置文件使用不同的格式,例如 XML?
  • 仅仅是因为 Karaf 带有一个属性配置文件,该文件已经内置了很多日志记录。我宁愿不将该文件移植到 XML。我的更改只是整个属性文件的一小部分。

标签: log4j2 apache-karaf


【解决方案1】:

我参考了两个网页(谢谢)。

添加并定义“~s”。

appenders、appenderRefs

这是定义接下来会发生什么的通知。

name=PropertiesConfig
property.filename_fileapp1 = ./logs/fileapp1.log
property.filename_fileapp2 = ./logs/fileapp2.log

appenders = console, fileapp1, fileapp2

appender.console.type = Console
appender.console.name = STDOUT
...

appender.fileapp1.type = RollingRandomAccessFile
appender.fileapp1.name = fileapp1_AppenderName
appender.fileapp1.fileName = ${filename_fileapp1}
appender.fileapp1.filePattern = ${filename_fileapp1}.%d{yyyy-MM-dd}.log
...

appender.fileapp2.type = RollingRandomAccessFile
appender.fileapp2.name = fileapp2_AppenderName
appender.fileapp2.fileName = ${filename_fileapp2}
appender.fileapp2.filePattern = ${filename_fileapp2}.%d{yyyy-MM-dd}.log
...


loggers = mylogger1
logger.mylogger1.name = com.jornathan.sample.log4j2PropertyTest
logger.mylogger1.level = info   

#keep this value for testing.
logger.mylogger1.additivity = true

#Here is what you need.
logger.mylogger1.appenderRefs = fileapp1Appender, fileapp2Appender   
logger.mylogger1.appenderRef.fileapp1Appender.ref = fileapp1_AppenderName
logger.mylogger1.appenderRef.fileapp2Appender.ref = fileapp2_AppenderName

【讨论】:

  • 谢谢乔纳森。我缺少的部分是 appenderRefs,它最终允许您为相同类型的 appender 的每个实例包含多个 appenderRef 行。
猜你喜欢
  • 2020-01-05
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多