[Log4j2]:以编程方式关闭特定Java包的日志记录

时间:2016-03-17 15:39:46

标签: java logging log4j2

我使用以下代码以编程方式配置我的日志配置:

 public static void configureLoggers() {
  ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();

  builder.setStatusLevel(Level.DEBUG);
  builder.setConfigurationName("ConfigName");

  AppenderComponentBuilder consoleAppenderBuilder = builder.newAppender("Stdout", "CONSOLE");
  consoleAppenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%m%n"));

  builder.add(consoleAppenderBuilder);

  RootLoggerComponentBuilder rootLoggerBuilder = builder.newRootLogger(LEVEL.DEBUG);
  rootLoggerBuilder.add(builder.newAppenderRef("Stdout")).addAttribute("additivity", true);
  builder.add(rootLoggerBuilder);

  LoggerContext.getContext(false).start(builder.build());
 }

我需要关闭项目中特定java包的日志记录;比如org.glassfish。我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设org.glassfish记录器使用类名作为记录器名称获取记录器,那么您只需要使用&#34; org.glassfish&#34;添加另一个记录器到您的配置中。作为记录器名称,然后将其设置为您希望它过滤的任何级别。如果你没有指定AppenderRef并且它被设置为可加性&#34; true&#34; (默认值)然后事件将自动转到根记录器的追加器。

答案 1 :(得分:0)

找到它:

builder.add(builder.newLogger("org.glassfish", Level.OFF));