Search in sources :

Example 1 with Level

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));
}
Also used : Path(java.nio.file.Path) Configuration(org.apache.logging.log4j.core.config.Configuration) Environment(org.elasticsearch.env.Environment) Level(org.apache.logging.log4j.Level) Matchers.hasToString(org.hamcrest.Matchers.hasToString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) LoggerContext(org.apache.logging.log4j.core.LoggerContext) Settings(org.elasticsearch.common.settings.Settings) LoggerConfig(org.apache.logging.log4j.core.config.LoggerConfig)

Example 2 with Level

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);
        }
    }
}
Also used : Level(org.apache.logging.log4j.Level)

Example 3 with 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());
    }
}
Also used : Level(org.apache.logging.log4j.Level) DiscoverySettings(org.elasticsearch.discovery.DiscoverySettings) RecoverySettings(org.elasticsearch.indices.recovery.RecoverySettings) Settings(org.elasticsearch.common.settings.Settings)

Example 4 with Level

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);
    }
}
Also used : Level(org.apache.logging.log4j.Level)

Example 5 with Level

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);
    }
}
Also used : Level(org.apache.logging.log4j.Level)

Aggregations

Level (org.apache.logging.log4j.Level)162 Test (org.junit.Test)31 LoggerContext (org.apache.logging.log4j.core.LoggerContext)28 LoggerConfig (org.apache.logging.log4j.core.config.LoggerConfig)28 Logger (org.apache.logging.log4j.Logger)26 SimpleMessage (org.apache.logging.log4j.message.SimpleMessage)25 Message (org.apache.logging.log4j.message.Message)23 Marker (org.apache.logging.log4j.Marker)21 Configuration (org.apache.logging.log4j.core.config.Configuration)21 Map (java.util.Map)16 HashMap (java.util.HashMap)14 LogEvent (org.apache.logging.log4j.core.LogEvent)13 Test (org.junit.jupiter.api.Test)13 ContextStack (org.apache.logging.log4j.ThreadContext.ContextStack)11 Appender (org.apache.logging.log4j.core.Appender)11 StringMap (org.apache.logging.log4j.util.StringMap)10 ArrayList (java.util.ArrayList)9 IOException (java.io.IOException)8 List (java.util.List)8 Log4jLogEvent (org.apache.logging.log4j.core.impl.Log4jLogEvent)8