如何根据Java系统属性有条件地添加log4j2附加程序? [英] How do I conditionally add log4j2 appender depending on java system property?

查看:82
本文介绍了如何根据Java系统属性有条件地添加log4j2附加程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图弄清如何根据是否给定/设置java系统属性将追加器添加到记录器中.

I'm trying to figure out how I can add an appender to a logger dependent on whether a java system property is given / set.

所以说我有一个像这样的基本配置:

So let's say I have a basic configuration like this:

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

因此,现在我想找出一种方法,仅在提供参数-PaddAppender2的情况下才有条件地添加第二个附加程序.像这样:

So now I'd like to figure out a way to conditionally only add the 2nd appender if I provide a parameter -PaddAppender2. Something like this:

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

我该怎么做?

例如,我知道我可以像这样对给定属性("logLevel")进行动态调整(如果未提供该属性,则"info"为默认值):

I know I can for example make the level dynamic on a given property ("logLevel") like that (where "info" is the default if the property is not given):

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

我查看了有关过滤器的文档,我可以t弄清楚.当然,如果过滤器是前往此处的正确方法,那么当然.

I looked at the documentation for filters, and I can't figure it out. That is of course if filters are even the right way to go here.

推荐答案

无需任何脚本的解决方案:

Solution without any scripting:

<?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系统属性有条件地添加log4j2附加程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆