Java >> Java tutorial >  >> Tag >> Log4j

Skift logniveau i Log4j2

Den nemme måde:

REDIGERET i henhold til log4j2 version 2.4 FAQ

Du kan indstille en loggers niveau med klassekonfiguratoren fra Log4j Core. MEN Vær opmærksom på, at Configurator-klassen ikke er en del af den offentlige API.

// org.apache.logging.log4j.core.config.Configurator;
Configurator.setLevel("com.example.Foo", Level.DEBUG);

// You can also set the root logger:
Configurator.setRootLevel(Level.DEBUG);

Kilde

Den foretrukne måde:

REDIGERET for at afspejle ændringer i API'en introduceret i Log4j2 version 2.0.2

Hvis du ønsker at ændre rodlogger-niveauet, skal du gøre noget som dette:

LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); 
loggerConfig.setLevel(level);
ctx.updateLoggers();  // This causes all Loggers to refetch information from their LoggerConfig.

Her er javadoc'et til LoggerConfig.


Det accepterede svar fra @slaadvak virkede ikke for mig til Log4j2 2.8.2. Det gjorde følgende.

For at ændre loggen Level universelt brug:

Configurator.setAllLevels(LogManager.getRootLogger().getName(), level);

For at ændre loggen Level kun for den aktuelle klasse, brug:

Configurator.setLevel(LogManager.getLogger(CallingClass.class).getName(), level);

Hvis du vil ændre et enkelt specifikt loggerniveau (ikke rodloggeren eller loggerne konfigureret i konfigurationsfilen), kan du gøre dette:

public static void setLevel(Logger logger, Level level) {
    final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
    final Configuration config = ctx.getConfiguration();

    LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName());
    LoggerConfig specificConfig = loggerConfig;

    // We need a specific configuration for this logger,
    // otherwise we would change the level of all other loggers
    // having the original configuration as parent as well

    if (!loggerConfig.getName().equals(logger.getName())) {
        specificConfig = new LoggerConfig(logger.getName(), level, true);
        specificConfig.setParent(loggerConfig);
        config.addLogger(logger.getName(), specificConfig);
    }
    specificConfig.setLevel(level);
    ctx.updateLoggers();
}

Java tag