如何在log4j2中动态打开或关闭rootLogger的一个appender?

时间:2014-05-11 07:22:59

标签: java log4j log4j2

如何在运行时通过java动态打开或关闭log4j2中rootLogger的一个appender?

例如,我想禁用Console Appender:

...
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
...

有可能吗?

2 个答案:

答案 0 :(得分:1)

您可以以编程方式添加或删除appender。在您的情况下,请删除Console

final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
config.getRootLogger().removeAppender("CONSOLE");
ctx.updateLoggers();

有一个LifeCycle接口,其中包含方法stopstart,但看起来在停止后无法重新启动appender。

答案 1 :(得分:0)

您可以向控制台appenderref添加脚本过滤器,以检查系统属性的值。然后,只需在要禁用日志记录到控制台时设置该属性。如果您想重新打开它,请将其重置。