我一直在使用 Java 属性文件搜索特定于配置 log4j2 的文档,但我能找到的只是一些相当基本的示例。我找到的大多数文档(如果存在)都展示了如何在 XML 文件中进行 log4j2 配置。更具体地说,我需要在 Java 属性文件中配置一个
DynamicThresholdFilter
过滤器。
我在 log4j2 手册中找到了这个 DynamicThresholdFilter XML 配置示例。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<DynamicThresholdFilter key="loginId" defaultThreshold="ERROR"
onMatch="ACCEPT" onMismatch="NEUTRAL">
<KeyValuePair key="User1" value="DEBUG"/>
</DynamicThresholdFilter>
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
我尝试将此配置转换为 Java 属性语法,但我还没有完全正确。
status = warn
name = MyApp
packages =
dynamicThresholdFilter.key = loginId
dynamicThresholdFilter.defaultThreshold = ERROR
dynamicThresholdFilter.onMatch = ACCEPT
dynamicThresholdFilter.onMismatch = NEUTRAL
dynamicThresholdFilter.Pairs.0.key = User1
dynamicThresholdFilter.Pairs.0.value = DEBUG
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = logs/app.log
appender.rolling.filePattern = logs/app-%d{MM-dd-yyyy}.log.gz
appender.rolling.filter.burst.type = BurstFilter
appender.rolling.filter.burst.level = INFO
appender.rolling.filter.burst.rate = 16
appender.rolling.filter.burst.maxBurst = 100
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d %p %c{1.} [%t] %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
rootLogger.level = error
rootLogger.appenderRef.rolling.ref = RollingFile
上述 XML 配置的正确 Java 属性转换是什么?
2.x 中的属性配置工厂要求您为每个子组件(对应于复杂的 XML 元素)指定一个
type
属性。同时,您为子组件使用的前缀并不重要:
dynamic.type = DynamicThresholdFilter
dynamic.key = loginId
dynamic.defaultThreshold = ERROR
dynamic.onMatch = ACCEPT
dynamic.onMismatch = NEUTRAL
dynamic.p0.type = KeyValuePair
dynamic.p0.key = User1
dynamic.p0.value = DEBUG
jackson-dataformat-properties
,以在 XML 和属性之间提供更“标准”的映射(参见 PR#2170),但代价是为粉丝提供额外的依赖项属性格式。
在这种情况下,映射会更加简单,您只需为
empty元素添加
type
属性即可:
DynamicThresholdFilter.key = loginId
DynamicThresholdFilter.defaultThreshold = ERROR
DynamicThresholdFilter.onMatch = ACCEPT
DynamicThresholdFilter.onMismatch = NEUTRAL
DynamicThresholdFilter.KeyValuePair[1].key = User1
DynamicThresholdFilter.KeyValuePair[1].value = DEBUG
log4j-config-properties
神器将从版本3.0.0-beta2
开始可用。