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();
}