use of org.apache.logging.log4j.Level in project elasticsearch by elastic.
the class EvilLoggerConfigurationTests method testLoggingLevelsFromSettings.
public void testLoggingLevelsFromSettings() throws IOException, UserException {
final Level rootLevel = randomFrom(Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR);
final Level fooLevel = randomFrom(Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR);
final Level barLevel = randomFrom(Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR);
final Path configDir = getDataPath("minimal");
final Settings settings = Settings.builder().put(Environment.PATH_CONF_SETTING.getKey(), configDir.toAbsolutePath()).put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString()).put("logger.level", rootLevel.name()).put("logger.foo", fooLevel.name()).put("logger.bar", barLevel.name()).build();
final Environment environment = new Environment(settings);
LogConfigurator.configure(environment);
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
final Map<String, LoggerConfig> loggerConfigs = config.getLoggers();
assertThat(loggerConfigs.size(), equalTo(3));
assertThat(loggerConfigs, hasKey(""));
assertThat(loggerConfigs.get("").getLevel(), equalTo(rootLevel));
assertThat(loggerConfigs, hasKey("foo"));
assertThat(loggerConfigs.get("foo").getLevel(), equalTo(fooLevel));
assertThat(loggerConfigs, hasKey("bar"));
assertThat(loggerConfigs.get("bar").getLevel(), equalTo(barLevel));
assertThat(ctx.getLogger(randomAsciiOfLength(16)).getLevel(), equalTo(rootLevel));
}
use of org.apache.logging.log4j.Level in project elasticsearch by elastic.
the class LogConfigurator method configureLoggerLevels.
/**
* Configures the logging levels for loggers configured in the specified settings.
*
* @param settings the settings from which logger levels will be extracted
*/
private static void configureLoggerLevels(final Settings settings) {
if (ESLoggerFactory.LOG_DEFAULT_LEVEL_SETTING.exists(settings)) {
final Level level = ESLoggerFactory.LOG_DEFAULT_LEVEL_SETTING.get(settings);
Loggers.setLevel(ESLoggerFactory.getRootLogger(), level);
}
final Map<String, String> levels = settings.filter(ESLoggerFactory.LOG_LEVEL_SETTING::match).getAsMap();
for (final String key : levels.keySet()) {
// do not set a log level for a logger named level (from the default log setting)
if (!key.equals(ESLoggerFactory.LOG_DEFAULT_LEVEL_SETTING.getKey())) {
final Level level = ESLoggerFactory.LOG_LEVEL_SETTING.getConcreteSetting(key).get(settings);
Loggers.setLevel(ESLoggerFactory.getLogger(key.substring("logger.".length())), level);
}
}
}
use of org.apache.logging.log4j.Level in project elasticsearch by elastic.
the class ClusterSettingsIT method testLoggerLevelUpdate.
public void testLoggerLevelUpdate() {
assertAcked(prepareCreate("test"));
final Level level = ESLoggerFactory.getRootLogger().getLevel();
final IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> client().admin().cluster().prepareUpdateSettings().setTransientSettings(Settings.builder().put("logger._root", "BOOM")).execute().actionGet());
assertEquals("Unknown level constant [BOOM].", e.getMessage());
try {
final Settings.Builder testSettings = Settings.builder().put("logger.test", "TRACE").put("logger._root", "trace");
client().admin().cluster().prepareUpdateSettings().setTransientSettings(testSettings).execute().actionGet();
assertEquals(Level.TRACE, ESLoggerFactory.getLogger("test").getLevel());
assertEquals(Level.TRACE, ESLoggerFactory.getRootLogger().getLevel());
} finally {
if (randomBoolean()) {
final Settings.Builder defaultSettings = Settings.builder().putNull("logger.test").putNull("logger._root");
client().admin().cluster().prepareUpdateSettings().setTransientSettings(defaultSettings).execute().actionGet();
} else {
final Settings.Builder defaultSettings = Settings.builder().putNull("logger.*");
client().admin().cluster().prepareUpdateSettings().setTransientSettings(defaultSettings).execute().actionGet();
}
assertEquals(level, ESLoggerFactory.getLogger("test").getLevel());
assertEquals(level, ESLoggerFactory.getRootLogger().getLevel());
}
}
use of org.apache.logging.log4j.Level in project elasticsearch by elastic.
the class ScopedSettingsTests method testLoggingUpdates.
public void testLoggingUpdates() {
final Level level = ESLoggerFactory.getRootLogger().getLevel();
final Level testLevel = ESLoggerFactory.getLogger("test").getLevel();
Level property = randomFrom(Level.values());
Settings.Builder builder = Settings.builder().put("logger.level", property);
try {
ClusterSettings settings = new ClusterSettings(builder.build(), ClusterSettings.BUILT_IN_CLUSTER_SETTINGS);
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> settings.validate(Settings.builder().put("logger._root", "boom").build()));
assertEquals("Unknown level constant [BOOM].", ex.getMessage());
assertEquals(level, ESLoggerFactory.getRootLogger().getLevel());
settings.applySettings(Settings.builder().put("logger._root", "TRACE").build());
assertEquals(Level.TRACE, ESLoggerFactory.getRootLogger().getLevel());
settings.applySettings(Settings.builder().build());
assertEquals(property, ESLoggerFactory.getRootLogger().getLevel());
settings.applySettings(Settings.builder().put("logger.test", "TRACE").build());
assertEquals(Level.TRACE, ESLoggerFactory.getLogger("test").getLevel());
settings.applySettings(Settings.builder().build());
assertEquals(property, ESLoggerFactory.getLogger("test").getLevel());
} finally {
Loggers.setLevel(ESLoggerFactory.getRootLogger(), level);
Loggers.setLevel(ESLoggerFactory.getLogger("test"), testLevel);
}
}
use of org.apache.logging.log4j.Level in project elasticsearch by elastic.
the class ScopedSettingsTests method testFallbackToLoggerLevel.
public void testFallbackToLoggerLevel() {
final Level level = ESLoggerFactory.getRootLogger().getLevel();
try {
ClusterSettings settings = new ClusterSettings(Settings.builder().put("logger.level", "ERROR").build(), ClusterSettings.BUILT_IN_CLUSTER_SETTINGS);
assertEquals(level, ESLoggerFactory.getRootLogger().getLevel());
settings.applySettings(Settings.builder().put("logger._root", "TRACE").build());
assertEquals(Level.TRACE, ESLoggerFactory.getRootLogger().getLevel());
// here we fall back to 'logger.level' which is our default.
settings.applySettings(Settings.builder().build());
assertEquals(Level.ERROR, ESLoggerFactory.getRootLogger().getLevel());
} finally {
Loggers.setLevel(ESLoggerFactory.getRootLogger(), level);
}
}
Aggregations