public Properties createProperties(Props props, File logDir) { Log4JPropertiesBuilder log4JPropertiesBuilder = new Log4JPropertiesBuilder(props); RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessId(ProcessId.ELASTICSEARCH).build(); String logPattern = log4JPropertiesBuilder.buildLogPattern(config); log4JPropertiesBuilder.internalLogLevel(Level.ERROR); log4JPropertiesBuilder.configureGlobalFileLog(config, logDir, logPattern); log4JPropertiesBuilder.apply( LogLevelConfig.newBuilder(log4JPropertiesBuilder.getRootLoggerName()) .rootLevelFor(ProcessId.ELASTICSEARCH) .build()); return log4JPropertiesBuilder.get(); }
private void verifyRootLoggerLevel(Log4JPropertiesBuilder underTest, Level expectedLevel) { assertThat(underTest.get().get("rootLogger.level")).isEqualTo(expectedLevel.toString()); }
public Properties createProperties(Props props, File logDir) { Log4JPropertiesBuilder log4JPropertiesBuilder = new Log4JPropertiesBuilder(props); RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessId(ProcessId.ELASTICSEARCH).build(); String logPattern = log4JPropertiesBuilder.buildLogPattern(config); log4JPropertiesBuilder.internalLogLevel(Level.ERROR); log4JPropertiesBuilder.configureGlobalFileLog(config, logDir, logPattern); log4JPropertiesBuilder.apply( LogLevelConfig.newBuilder(log4JPropertiesBuilder.getRootLoggerName()) .rootLevelFor(ProcessId.ELASTICSEARCH) .build()); return log4JPropertiesBuilder.get(); }
@Test public void constructor_sets_status_to_ERROR() { Properties properties = underTest.get(); assertThat(properties.getProperty("status")).isEqualTo("ERROR"); }
private void verifySizeRollingPolicy(Log4JPropertiesBuilder builder, File logDir, String logPattern, String sizePattern, int maxFiles) { verifyPropertiesForConfigureGlobalFileLog(builder.get(), "appender.file_es.type", "RollingFile", "appender.file_es.name", "file_es", "appender.file_es.filePattern", new File(logDir, "es.%i.log").getAbsolutePath(), "appender.file_es.fileName", new File(logDir, "es.log").getAbsolutePath(), "appender.file_es.layout.type", "PatternLayout", "appender.file_es.layout.pattern", logPattern, "appender.file_es.policies.type", "Policies", "appender.file_es.policies.size.type", "SizeBasedTriggeringPolicy", "appender.file_es.policies.size.size", sizePattern, "appender.file_es.strategy.type", "DefaultRolloverStrategy", "appender.file_es.strategy.max", valueOf(maxFiles), "rootLogger.appenderRef.file_es.ref", "file_es"); }
private void verifyTimeRollingPolicy(Log4JPropertiesBuilder builder, File logDir, String logPattern, String datePattern, int maxFiles) { verifyPropertiesForConfigureGlobalFileLog(builder.get(), "appender.file_es.type", "RollingFile", "appender.file_es.name", "file_es", "appender.file_es.filePattern", new File(logDir, "es.%d{" + datePattern + "}.log").getAbsolutePath(), "appender.file_es.fileName", new File(logDir, "es.log").getAbsolutePath(), "appender.file_es.layout.type", "PatternLayout", "appender.file_es.layout.pattern", logPattern, "appender.file_es.policies.type", "Policies", "appender.file_es.policies.time.type", "TimeBasedTriggeringPolicy", "appender.file_es.policies.time.interval", "1", "appender.file_es.policies.time.modulate", "true", "appender.file_es.strategy.type", "DefaultRolloverStrategy", "appender.file_es.strategy.fileIndex", "nomax", "appender.file_es.strategy.action.type", "Delete", "appender.file_es.strategy.action.basepath", logDir.getAbsolutePath(), "appender.file_es.strategy.action.maxDepth", "1", "appender.file_es.strategy.action.condition.type", "IfFileName", "appender.file_es.strategy.action.condition.glob", "es*", "appender.file_es.strategy.action.condition.nested_condition.type", "IfAccumulatedFileCount", "appender.file_es.strategy.action.condition.nested_condition.exceeds", valueOf(maxFiles), "rootLogger.appenderRef.file_es.ref", "file_es"); }
@Test public void apply_does_not_create_loggers_property_if_only_root_level_is_defined() { LogLevelConfig logLevelConfig = newLogLevelConfig().rootLevelFor(ProcessId.APP).build(); underTest.apply(logLevelConfig); assertThat(underTest.get().getProperty("loggers")).isNull(); }
@Test public void configureGlobalFileLog_sets_properties_for_no_rolling_policy_when_property_is_none() throws Exception { File logDir = temporaryFolder.newFolder(); String logPattern = randomAlphanumeric(15); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder( ROLLING_POLICY_PROPERTY, "none"); underTest.configureGlobalFileLog(esRootLoggerConfig, logDir, logPattern); verifyPropertiesForConfigureGlobalFileLog(underTest.get(), "appender.file_es.type", "File", "appender.file_es.name", "file_es", "appender.file_es.fileName", new File(logDir, "es.log").getAbsolutePath(), "appender.file_es.layout.type", "PatternLayout", "appender.file_es.layout.pattern", logPattern, "rootLogger.appenderRef.file_es.ref", "file_es"); }
@Test public void apply_creates_loggers_property_with_logger_names_ordered_but_root() { LogLevelConfig config = newLogLevelConfig() .rootLevelFor(ProcessId.WEB_SERVER) .levelByDomain("foo", ProcessId.WEB_SERVER, LogDomain.JMX) .levelByDomain("bar", ProcessId.COMPUTE_ENGINE, LogDomain.ES) .immutableLevel("doh", Level.ERROR) .immutableLevel("pif", Level.TRACE) .offUnlessTrace("fii") .build(); underTest.apply(config); assertThat(underTest.get().getProperty("loggers")).isEqualTo("bar,doh,fii,foo,pif"); }
@Test public void apply_set_level_to_OFF_if_sonar_global_level_is_not_set() { underTest.apply(newLogLevelConfig().offUnlessTrace("fii").build()); verifyLoggerProperties(underTest.get(), "fii", Level.OFF); }
@Test @UseDataProvider("logbackLevels") public void apply_accepts_any_level_as_hardcoded_level(Level level) { LogLevelConfig config = newLogLevelConfig().immutableLevel("bar", level).build(); underTest.apply(config); verifyLoggerProperties(underTest.get(), "bar", level); }
@Test public void apply_sets_domain_property_over_process_and_global_property_if_all_set() { LogLevelConfig config = newLogLevelConfig().levelByDomain("foo", ProcessId.WEB_SERVER, LogDomain.ES).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder( "sonar.log.level", "DEBUG", "sonar.log.level.web", "DEBUG", "sonar.log.level.web.es", "TRACE"); underTest.apply(config); verifyLoggerProperties(underTest.get(), "foo", Level.TRACE); }
@Test public void apply_sets_domain_property_over_global_property_if_both_set() { LogLevelConfig config = newLogLevelConfig().levelByDomain("foo", ProcessId.WEB_SERVER, LogDomain.ES).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder( "sonar.log.level", "DEBUG", "sonar.log.level.web.es", "TRACE"); underTest.apply(config); verifyLoggerProperties(underTest.get(), "foo", Level.TRACE); }
private void setLevelToOff(Level globalLogLevel) { Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level", globalLogLevel.toString()); underTest.apply(newLogLevelConfig().offUnlessTrace("fii").build()); verifyLoggerProperties(underTest.get(), "fii", Level.OFF); }
@Test public void apply_sets_domain_property_over_process_property_if_both_set() { LogLevelConfig config = newLogLevelConfig().levelByDomain("foo", ProcessId.WEB_SERVER, LogDomain.ES).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder( "sonar.log.level.web", "DEBUG", "sonar.log.level.web.es", "TRACE"); underTest.apply(config); verifyLoggerProperties(underTest.get(), "foo", Level.TRACE); }
@Test public void apply_does_not_set_level_if_sonar_global_level_is_TRACE() { Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level", Level.TRACE.toString()); underTest.apply(newLogLevelConfig().offUnlessTrace("fii").build()); verifyNoLoggerProperties(underTest.get(), "fii"); }