gpt4 book ai didi

java - 如何根据 java 系统属性有条件地添加 log4j2 appender?

转载 作者:搜寻专家 更新时间:2023-11-01 02:40:15 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何根据是否给定/设置了 Java 系统属性向记录器添加附加程序。

假设我有这样的基本配置:

<Logger name="myLogger" level="info" additivity="false">
<AppenderRef ref="myAppender1" />
<AppenderRef ref="myAppender2" />
</Logger>

所以现在我想找出一种方法,如果我提供参数 -PaddAppender2,则有条件地只添加第二个附加程序。像这样:

<Logger name="myLogger" level="info" additivity="false">
<AppenderRef ref="myAppender1" />
<?if (${sys:enableAppender2:-false) == "true"}>
<AppenderRef ref="myAppender2" />
</?if>
</Logger>

我该怎么做?

例如,我知道我可以在给定的属性(“logLevel”)上使级别动态化(如果未给出属性,则“info”是默认值):

<Logger name="test" level="${sys:logLevel:-info}" additivity="false">

我查看了 documentation for filters ,我想不通。如果过滤器甚至是正确的方法,那当然是正确的。

最佳答案

没有任何脚本的解决方案:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error" strict="true">
<Properties>
<Property name="appenderToUse">stdout_${sys:LOG4J_LAYOUT:-plain}</Property>
</Properties>

<Appenders>
<Appender type="Console" name="stdout_plain">
<Layout type="PatternLayout" pattern="%d [%t] %-5p %c - %m%n"/>
</Appender>

<Appender type="Console" name="stdout_json">
<Layout type="JSONLayout" compact="true" eventEol="true" stacktraceAsString="true" properties="true"/>
</Appender>
</Appenders>

<Loggers>
<Root level="info">
<AppenderRef ref="${appenderToUse}"/>
</Root>
</Loggers>
</Configuration>

关于java - 如何根据 java 系统属性有条件地添加 log4j2 appender?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35054870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com