当前位置: 首页 > 知识库问答 >
问题:

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

公西姚石
2023-03-14

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

例如,我想禁用控制台Appender:

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

有可能吗?

共有2个答案

车诚
2023-03-14

您可以向控制台appenderref添加一个脚本过滤器,用于检查系统属性的值。然后只要设置属性,当你想要登录到控制台禁用。当你想让它重新打开时,重新设置它。

须曜文
2023-03-14

您可以通过编程方式添加或删除追加器。在您的情况下,让我们删除控制台

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

有一个LifeCycle接口,其中包含方法Stopstart,但是在appender停止后,您似乎无法重新启动它。

 类似资料:
  • 我复制了一个模板从coDepen。这段代码非常过时,有一些旧的cdn链接。这意味着我必须找到这些链接的更新版本。我是如此接近使应用程序完全功能,我需要打开后关闭模式。我相信这和自举有关。链接和模态代码如下。

  • 问题内容: 我正在尝试使用$ log.debug(“ Foo”)。如何将其关闭。我在任何地方都找不到样品。我认为它需要在配置中设置,但我似乎也无法使其正常工作。 哪里设置开关? 问题答案: $ logProvider.debugEnabled(true) 仅在AngularJs 1.1.2或更高版本中可用。 https://github.com/angular/angular.js/pull/16

  • 在页面中收集各种链接后,我点击这些链接并将其收集成汤。现在的问题是,链接在新标签中打开。我想在代码打开新标签中的下一个链接之前关闭标签。下面是代码片段。收完汤后,请帮我把每个标签关上。 我用python 3.7硒铬驱动

  • 问题内容: 从Activity中包含的RecyclerView的适配器中,我试图在按下RecyclerView的元素时启动一个片段,这是我现在的代码: 我测试了它是否启动了我创建的一些“测试活动”,所以我知道除了片段启动之外的所有功能都可以正常工作。 错误在这里: 我正在启动作为活动的Fragment,所以当我运行应用程序时,它崩溃了,并告诉我在清单中将MainFragment声明为活动。 如何从

  • 问题内容: 从使用ReactJS的prop验证功能开始,正如文档所说,出于性能原因,该功能仅在“开发模式”下有效。 React似乎正在验证我注释的特定组件的属性,但我不记得显式打开“开发模式”。 我尝试搜索如何触发/切换开发模式,但是没有任何运气。 问题答案: 对方的回答假设您使用外部预建的文件从反应,而正确的,是大多数人不会如何去或 应该 消耗作出反应,一个包。而且,在这一点上,大多数每个Rea

  • 问题内容: 我想检查wifi是否关闭,然后向用户显示警报以检查其连接。 我找到了这样的代码,但是它检查是否有互联网连接,而不是检查wifi是否打开: 问题答案: 你不能 使用Apple的可达性类别,您可以根据结构区分三件事: 您既没有WiFi也没有移动数据连接。 您具有WiFi连接,但是您可能有也可能没有移动数据连接。 您具有移动数据连接,但没有WiFi连接。 您 无法 检查WiFi是否已关闭,W