log4j2 将 xml 映射到属性文件
Posted
技术标签:
【中文标题】log4j2 将 xml 映射到属性文件【英文标题】:log4j2 mapping xml to properties file 【发布时间】:2017-08-27 07:21:55 【问题描述】:我有一个用 XML 编写的 log4j2 配置,但是为了安排目的,我需要将它们设置为属性格式(键和值)。我似乎无法将 xml 中的嵌套条件映射到属性。
这是我的 XML 配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Properties>
<Property name="log-path">./var/log/reporter/</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="$log-path/reporter.log"
filePattern="$log-path/reporter-%dyyyy-MM-dd-%i.log">
<PatternLayout>
<pattern>[Reporter] [%level] %dyyyy-MM-dd HH:mm:ss.SSS [%thread] [%logger36] %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max = "1000">
<Delete basePath="$log-path">
<IfFileName glob="reporter-*.log" />
<IfAny>
<IfLastModified age="90D" />
<IfAccumulatedFileSize exceeds="2 GB" />
</IfAny>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="root" level="debug" additivity="false">
<appender-ref ref="RollingFile" level="debug" />
</Logger>
<Root level="debug" additivity="false">
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
这是我的非工作属性配置映射:
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = $logpath/reporter.log
appender.rolling.filePattern = $logpath/reporter-%dyyyy-MM-dd-%i.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [Reporter] [%level] %dyyyy-MM-dd HH:mm:ss.SSS [%thread] [%logger36] %msg%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=1KB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 1000
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = $logpath
appender.rolling.strategy.action.NestedConditions.type = IfALL
appender.rolling.strategy.action.NestedConditions.PathConditions.type = IfFileName
appender.rolling.strategy.action.NestedConditions.PathConditions.glob = reporter-*.log
appender.rolling.strategy.action.NestedConditions.NestedConditions.type = IfAny
appender.rolling.strategy.action.NestedConditions.NestedConditions.time.type = IfLastModified
appender.rolling.strategy.action.NestedConditions.NestedConditions.time.age = 90D
appender.rolling.strategy.action.NestedConditions.NestedConditions.size.type = IfAccumulatedFileSize
appender.rolling.strategy.action.NestedConditions.NestedConditions.size.age = 2GB
logger.rolling.name = root
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile
rootLogger.level = debug
rootLogger.appenderRef.stdout.ref = RollingFile
【问题讨论】:
Mohamed,您能否将您的 xml 映射到属性?我也有类似的情况.. 很遗憾没有,我们最终改用了属性文件。 如果您使用属性文件,那么您是如何管理多个嵌套条件的?如果只有一个嵌套条件,则 elifyilbasi 的答案将匹配,但如果有两个或更多,则生成的属性看起来像先前嵌套条件的副本,因此它将不起作用。 【参考方案1】:有点晚了,但您可以通过链接https://github.com/elastic/elasticsearch/blob/master/distribution/src/main/resources/config/log4j2.properties获得洞察力
它具有您需要的所有条件属性用法。
【讨论】:
【参考方案2】:文件已移动链接已更新为https://github.com/elastic/elasticsearch/blob/master/distribution/src/config/log4j2.properties
【讨论】:
以上是关于log4j2 将 xml 映射到属性文件的主要内容,如果未能解决你的问题,请参考以下文章