Java 使用库log4j 2更改代码中的日志级别

Java 使用库log4j 2更改代码中的日志级别,java,logging,log4j2,Java,Logging,Log4j2,我正在尝试更改程序中的日志记录级别。 我使用log4j2,我有一个配置文件,其中包含控制台appender和文件appender: 我正在尝试更改日志记录级别,如下所示: public static void initialize(final boolean trace, final boolean debug) { System.out.println(); System.out.println("Class LogUtils -> method initia

我正在尝试更改程序中的日志记录级别。 我使用log4j2,我有一个配置文件,其中包含控制台appender和文件appender:

我正在尝试更改日志记录级别,如下所示:

public static void initialize(final boolean trace, final boolean debug) {
    System.out.println();
    System.out.println("Class LogUtils -> method initialize()");
    System.out.println("  trace: " + trace);
    System.out.println("  debug: " + debug);

    Level level = Level.INFO;
    if (trace) {
      level = Level.TRACE;
    } else if (debug) {
      level = Level.DEBUG;
    }
    System.out.println("  level: " + level.toString() + "\n");

    // Update log levels for all appenders

    final LoggerContext context = (LoggerContext) LogManager.getContext(false);
    final Configuration config = context.getConfiguration();
    
    final Map<String, LoggerConfig> configLoggers = config.getLoggers();
    for (Map.Entry<String, LoggerConfig> loggerConfigEntry : configLoggers.entrySet()) {
      final String key = loggerConfigEntry.getKey();
      final LoggerConfig loggerConfig = loggerConfigEntry.getValue();
      System.out.println("  '" + key + "' : " + loggerConfig);
      loggerConfig.setLevel(level); // set new level
    }
    context.updateLoggers(); // this causes all Loggers to update information from their LoggerConfig

    final List<AppenderRef> refs = config.getLoggerConfig("root").getAppenderRefs();
    for (final AppenderRef ref : refs) {
      System.out.println("  ref: " + ref + " (level: " + ref.getLevel() + ")");
    }

    System.out.println();
}
虽然我试图更改级别信息,但仍然有级别跟踪。 此外,在我的程序中,我看到仍然显示跟踪和调试类型的日志

你能帮帮我吗

Class LogUtils -> method initialize()
  trace: false
  debug: false
  level: INFO

  '' : root
  ref: Console_Appender (level: TRACE)
  ref: Routing_Appender (level: TRACE)