java - 什么是 Log4j2 语法,特别是对于名称的第二部分?

我一直无法找到设置配置文件的语法。当然它正在工作,但无法找到第二项的解释。

例如,我看到很多这样的样本并且它有效。

log4j2.properties
name = PropertiesConfig
 
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${LOG_DIR}/application.log
appender.rolling.filePattern = ${LOG_DIR}/application.%d{dd-MMM}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
 
logger.rolling.name = rollingFile
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile

但我也看到了这样的样本,它也可以工作。

log4j2.properties
name = PropertiesConfig
 
appender.rolling5.type = RollingFile
appender.rolling5.name = RollingFile
appender.rolling5.fileName = ${LOG_DIR}/application.log
appender.rolling5.filePattern = ${LOG_DIR}/application.%d{dd-MMM}.log.gz
appender.rolling5.layout.type = PatternLayout
appender.rolling5.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
appender.rolling5.policies.type = Policies
appender.rolling5.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling5.policies.size.size=10MB
appender.rolling5.strategy.type = DefaultRolloverStrategy
appender.rolling5.strategy.max = 5
 
logger.rolling3.name = rollingFile
logger.rolling3.level = debug
logger.rolling3.additivity = false
logger.rolling3.appenderRef.rolling.ref = RollingFile

最初看起来滚动是实际的第二项

logger.rolling.someProperty

但看起来第二个项目几乎可以是任何东西。

logger.anyValue.someProperty

是否有一个链接来讨论这个第二项和可接受的 values 以及何时需要可能匹配?

回答1

属性配置格式的最佳参考当然是https://github.com/apache/logging-log4j2/blob/release-2.x/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java

Log4j2 配置的性质是分层的(以默认 XML 配置格式表示),而属性格式是平面的。因此,只要 Log4j2 语法允许同一类型的多个组件,每个组件的属性都必须以唯一标识符作为前缀。对标识符的唯一限制是它不能包含点 .。您可以将这些标识符视为通过将方形钉放入圆孔中获得的碎片,没有其他 Log4j2 配置格式具有它们。

例如,如果在您的 XML 配置中,您有:

<Loggers>
    <Logger name="org.apache.logging.log4j" level="INFO" />
    <Logger name="org.apache.logging.log4j.core" level="DEBUG" />
</Loggers>

要将其转换为属性格式,您需要选择两个标识符,例如 <1><2>,您将获得:

logger.<1>.name = org.apache.logging.log4j
logger.<1>.level = INFO
logger.<2>.name = org.apache.logging.log4j.core
logger.<2>.level = DEBUG

相似文章

c - 如何在 C 中添加模糊效果

我在为CS50设置的问题中创建模糊效果时遇到问题。我能够理解我的代码背后的逻辑,我认为它应该可以工作。代码可以编译,但模糊效果并没有按照我想要的方式发生。这个想法是一个像素将从它自己和相邻像素中获得平...

excel - 在执行期间减慢宏

我有以下问题:宏在执行过程中变慢,执行后excel文件速度变慢。页面之间的导航、保存和关闭执行非常缓慢,有时在关闭期间没有来自excel的响应,并且必须通过任务管理器关闭文件。在一切正常之前,有任何上...

cs50 - CS50,PS4 - 滤镜(少) - 模糊

我一直在用BLUR打破我的头,并不断得到segmentationfault。请要求有人告诉我我的代码做错了什么。在花费了这么多时间之后不断出现错误是非常烦人和令人沮丧的。有关更多上下文,我已经粘贴了我...

随机推荐

最新文章