Java 如何在log4j2中动态打开或关闭rootLogger的一个appender?
如何在运行时通过java动态地打开或关闭log4j2中rootLogger的一个appender 例如,我想禁用控制台附加器:Java 如何在log4j2中动态打开或关闭rootLogger的一个appender?,java,log4j,log4j2,Java,Log4j,Log4j2,如何在运行时通过java动态地打开或关闭log4j2中rootLogger的一个appender 例如,我想禁用控制台附加器: ... <Loggers> <Root level="INFO"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> <
...
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
...
。。。
...
是否可能?您可以将脚本筛选器添加到控制台appenderref,以检查系统属性的值。然后,当您希望禁用登录到控制台时,只需设置属性。当您想重新打开时,请将其重置。您可以通过编程方式添加或删除追加器。在您的情况下,让我们删除
控制台
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
config.getRootLogger().removeAppender("CONSOLE");
ctx.updateLoggers();
有一个包含方法
stop
和start
的接口,但在appender停止后,您似乎无法重新启动它 在我看来,如果您想通过代码来操作附加程序,您需要以编程方式添加附加程序。这里有一些类似的问题,我没有太多的上下文。但也许您可以在运行时通过JMX禁用/启用它?为什么不在.removeAppender()方法之后调用stop()方法呢?为什么不能重新启动appender?