private void configureRootLogger(Props props) { RootLoggerConfig config = newRootLoggerConfigBuilder() .setProcessId(processId) .setThreadIdFieldPattern(threadIdFieldPattern) .build(); String logPattern = helper.buildLogPattern(config); helper.configureGlobalFileLog(props, config, logPattern); helper.configureForSubprocessGobbler(props, logPattern); }
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(); }
void writeAppenderProperties() { put("name", appenderName); put("layout.type", "PatternLayout"); put("layout.pattern", logPattern); rollingPolicy.writePolicy(this.prefix); }
@Test public void apply_sets_root_logger_to_process_property_if_set() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level.web", "DEBUG"); underTest.apply(config); verifyRootLoggerLevel(underTest, Level.DEBUG); }
@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); }
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 @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_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"); }
@Test public void apply_fails_with_IAE_if_LogLevelConfig_does_not_have_rootLoggerName_of_Log4J() { Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder(); LogLevelConfig logLevelConfig = LogLevelConfig.newBuilder(randomAlphanumeric(2)).build(); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Value of LogLevelConfig#rootLoggerName must be \"rootLogger\""); underTest.apply(logLevelConfig); }
@Test public void apply_fails_with_IAE_if_domain_property_has_unsupported_level() { LogLevelConfig config = newLogLevelConfig().levelByDomain("foo", ProcessId.WEB_SERVER, LogDomain.JMX).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level.web.jmx", "ERROR"); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("log level ERROR in property sonar.log.level.web.jmx is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); underTest.apply(config); }
private String writeFileAppender(RootLoggerConfig config, File logDir, String logPattern) { String appenderName = "file_" + config.getProcessId().getLogFilenamePrefix(); RollingPolicy rollingPolicy = createRollingPolicy(logDir, config.getProcessId().getLogFilenamePrefix()); Appender appender = new Appender(appenderName, rollingPolicy, logPattern); appender.writeAppenderProperties(); return appender.getAppenderRef(); }
@Override public void writePolicy(String propertyPrefix) { writeTypeProperty(propertyPrefix, "File"); writeFileNameProperty(propertyPrefix); } }
@Test public void apply_sets_root_logger_to_INFO_if_no_property_is_set() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); underTest.apply(config); verifyRootLoggerLevel(underTest, Level.INFO); }
@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); }
@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 public void apply_sets_root_logger_to_global_property_if_set() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level", "TRACE"); underTest.apply(config); verifyRootLoggerLevel(underTest, Level.TRACE); }
@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_sets_root_logger_to_process_property_over_global_property_if_both_set() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level", "DEBUG", "sonar.log.level.web", "TRACE"); underTest.apply(config); verifyRootLoggerLevel(underTest, Level.TRACE); }
@Test public void apply_fails_with_IAE_if_global_property_has_unsupported_level() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level", "ERROR"); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("log level ERROR in property sonar.log.level is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); underTest.apply(config); }
@Test public void apply_fails_with_IAE_if_process_property_has_unsupported_level() { LogLevelConfig config = newLogLevelConfig().rootLevelFor(ProcessId.WEB_SERVER).build(); Log4JPropertiesBuilder underTest = newLog4JPropertiesBuilder("sonar.log.level.web", "ERROR"); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("log level ERROR in property sonar.log.level.web is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); underTest.apply(config); }