@Override protected void extendLogLevelConfiguration(LogLevelConfig.Builder logLevelConfigBuilder) { logLevelConfigBuilder.levelByDomain("sql", ProcessId.COMPUTE_ENGINE, LogDomain.SQL); logLevelConfigBuilder.levelByDomain("es", ProcessId.COMPUTE_ENGINE, LogDomain.ES); JMX_RMI_LOGGER_NAMES.forEach(loggerName -> logLevelConfigBuilder.levelByDomain(loggerName, ProcessId.COMPUTE_ENGINE, LogDomain.JMX)); LOGGER_NAMES_TO_TURN_OFF.forEach(loggerName -> logLevelConfigBuilder.immutableLevel(loggerName, Level.OFF)); }
@Test public void changeRoot_sets_level_of_ROOT_and_all_loggers_with_a_config_but_the_hardcoded_one() { 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) .build(); LoggerContext context = underTest.apply(config, props); assertThat(context.getLogger(ROOT_LOGGER_NAME).getLevel()).isEqualTo(Level.INFO); assertThat(context.getLogger("foo").getLevel()).isEqualTo(Level.INFO); assertThat(context.getLogger("bar").getLevel()).isEqualTo(Level.INFO); assertThat(context.getLogger("doh").getLevel()).isEqualTo(Level.ERROR); assertThat(context.getLogger("pif").getLevel()).isEqualTo(Level.TRACE); underTest.changeRoot(config, Level.DEBUG); assertThat(context.getLogger(ROOT_LOGGER_NAME).getLevel()).isEqualTo(Level.DEBUG); assertThat(context.getLogger("foo").getLevel()).isEqualTo(Level.DEBUG); assertThat(context.getLogger("bar").getLevel()).isEqualTo(Level.DEBUG); assertThat(context.getLogger("doh").getLevel()).isEqualTo(Level.ERROR); assertThat(context.getLogger("pif").getLevel()).isEqualTo(Level.TRACE); }
@Test public void builder_immutableLevel_set_specified_level_for_specified_logger() { LogLevelConfig config = underTest.immutableLevel("bar", Level.INFO).build(); assertThat(config.getConfiguredByProperties()).isEmpty(); assertThat(config.getConfiguredByHardcodedLevel()).hasSize(1); assertThat(config.getConfiguredByHardcodedLevel().get("bar")).isEqualTo(Level.INFO); }
private LogLevelConfig createLogLevelConfiguration(ProcessId processId) { LogLevelConfig.Builder builder = LogLevelConfig.newBuilder(helper.getRootLoggerName()); builder.rootLevelFor(processId); builder.immutableLevel("org.apache.ibatis", Level.WARN); builder.immutableLevel("java.sql", Level.WARN); builder.immutableLevel("java.sql.ResultSet", Level.WARN); builder.immutableLevel("org.sonar.MEASURE_FILTER", Level.WARN); builder.immutableLevel("org.elasticsearch", Level.INFO); builder.immutableLevel("org.elasticsearch.node", Level.INFO); builder.immutableLevel("org.elasticsearch.http", Level.INFO); builder.immutableLevel("ch.qos.logback", Level.WARN); builder.immutableLevel("org.apache.catalina", Level.INFO); builder.immutableLevel("org.apache.coyote", Level.INFO); builder.immutableLevel("org.apache.jasper", Level.INFO); builder.immutableLevel("org.apache.tomcat", Level.INFO); builder.immutableLevel("org.postgresql.core.v3.QueryExecutorImpl", Level.INFO); builder.immutableLevel("org.postgresql.jdbc.PgConnection", Level.INFO); extendLogLevelConfiguration(builder); return builder.build(); }
public LoggerContext configure() { LoggerContext ctx = helper.getRootContext(); ctx.reset(); helper.enableJulChangePropagation(ctx); configureConsole(ctx); if (helper.isAllLogsToConsoleEnabled(appSettings.getProps()) || !appSettings.getProps().valueAsBoolean("sonar.wrapped", false)) { configureWithLogbackWritingToFile(ctx); } else { configureWithWrapperWritingToFile(ctx); } helper.apply( LogLevelConfig.newBuilder(helper.getRootLoggerName()) .rootLevelFor(ProcessId.APP) .immutableLevel("com.hazelcast", Level.toLevel("WARN")) .build(), appSettings.getProps()); return ctx; }
@Override protected void extendLogLevelConfiguration(LogLevelConfig.Builder logLevelConfigBuilder) { logLevelConfigBuilder.levelByDomain("sql", ProcessId.COMPUTE_ENGINE, LogDomain.SQL); logLevelConfigBuilder.levelByDomain("es", ProcessId.COMPUTE_ENGINE, LogDomain.ES); JMX_RMI_LOGGER_NAMES.forEach(loggerName -> logLevelConfigBuilder.levelByDomain(loggerName, ProcessId.COMPUTE_ENGINE, LogDomain.JMX)); LOGGER_NAMES_TO_TURN_OFF.forEach(loggerName -> logLevelConfigBuilder.immutableLevel(loggerName, Level.OFF)); }
@Override protected void extendLogLevelConfiguration(LogLevelConfig.Builder logLevelConfigBuilder) { logLevelConfigBuilder.levelByDomain("sql", ProcessId.WEB_SERVER, LogDomain.SQL); logLevelConfigBuilder.levelByDomain("es", ProcessId.WEB_SERVER, LogDomain.ES); logLevelConfigBuilder.levelByDomain("auth.event", ProcessId.WEB_SERVER, LogDomain.AUTH_EVENT); JMX_RMI_LOGGER_NAMES.forEach(loggerName -> logLevelConfigBuilder.levelByDomain(loggerName, ProcessId.WEB_SERVER, LogDomain.JMX)); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.ContainerBase"); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.StandardContext"); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.StandardService"); LOGGER_NAMES_TO_TURN_OFF.forEach(loggerName -> logLevelConfigBuilder.immutableLevel(loggerName, Level.OFF)); }
private LogLevelConfig createLogLevelConfiguration(ProcessId processId) { LogLevelConfig.Builder builder = LogLevelConfig.newBuilder(helper.getRootLoggerName()); builder.rootLevelFor(processId); builder.immutableLevel("org.apache.ibatis", Level.WARN); builder.immutableLevel("java.sql", Level.WARN); builder.immutableLevel("java.sql.ResultSet", Level.WARN); builder.immutableLevel("org.elasticsearch", Level.INFO); builder.immutableLevel("org.elasticsearch.node", Level.INFO); builder.immutableLevel("org.elasticsearch.http", Level.INFO); builder.immutableLevel("ch.qos.logback", Level.WARN); builder.immutableLevel("org.apache.catalina", Level.INFO); builder.immutableLevel("org.apache.coyote", Level.INFO); builder.immutableLevel("org.apache.jasper", Level.INFO); builder.immutableLevel("org.apache.tomcat", Level.INFO); builder.immutableLevel("org.postgresql.core.v3.QueryExecutorImpl", Level.INFO); builder.immutableLevel("org.postgresql.jdbc.PgConnection", Level.INFO); builder.immutableLevel("org.apache.fop", Level.INFO); builder.immutableLevel("org.apache.xmlgraphics.image.loader.spi.ImageImplRegistry", Level.INFO); builder.immutableLevel("com.hazelcast.internal.cluster.impl.ClusterHeartbeatManager", Level.INFO); builder.immutableLevel("com.hazelcast.internal.cluster.impl.operations.HeartbeatOperation", Level.INFO); builder.immutableLevel("com.hazelcast.internal.partition.InternalPartitionService", Level.INFO); builder.immutableLevel("com.hazelcast.internal.partition.operation.PartitionStateOperation", Level.INFO); builder.immutableLevel("com.hazelcast.replicatedmap.impl.operation.RequestMapDataOperation", Level.INFO); builder.immutableLevel("com.hazelcast.replicatedmap.impl.operation.SyncReplicatedMapDataOperation", Level.INFO); builder.immutableLevel("io.netty.buffer.PoolThreadCache", Level.INFO);
public LoggerContext configure() { LoggerContext ctx = helper.getRootContext(); ctx.reset(); helper.enableJulChangePropagation(ctx); configureConsole(ctx); if (helper.isAllLogsToConsoleEnabled(appSettings.getProps()) || !appSettings.getProps().valueAsBoolean("sonar.wrapped", false)) { configureWithLogbackWritingToFile(ctx); } else { configureWithWrapperWritingToFile(ctx); } helper.apply( LogLevelConfig.newBuilder(helper.getRootLoggerName()) .rootLevelFor(ProcessId.APP) .immutableLevel("com.hazelcast", Level.toLevel("WARN")) .build(), appSettings.getProps()); return ctx; }
@Override protected void extendLogLevelConfiguration(LogLevelConfig.Builder logLevelConfigBuilder) { logLevelConfigBuilder.levelByDomain("sql", ProcessId.WEB_SERVER, LogDomain.SQL); logLevelConfigBuilder.levelByDomain("es", ProcessId.WEB_SERVER, LogDomain.ES); logLevelConfigBuilder.levelByDomain("auth.event", ProcessId.WEB_SERVER, LogDomain.AUTH_EVENT); JMX_RMI_LOGGER_NAMES.forEach(loggerName -> logLevelConfigBuilder.levelByDomain(loggerName, ProcessId.WEB_SERVER, LogDomain.JMX)); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.ContainerBase"); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.StandardContext"); logLevelConfigBuilder.offUnlessTrace("org.apache.catalina.core.StandardService"); LOGGER_NAMES_TO_TURN_OFF.forEach(loggerName -> logLevelConfigBuilder.immutableLevel(loggerName, Level.OFF)); }
@Test public void builder_immutableLevel_fails_with_NPE_if_level_is_null() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("level can't be null"); underTest.immutableLevel("foo", null); }
@Test public void builder_levelByDomain_fails_with_ISE_if_loggerName_has_immutableLevel() { underTest.immutableLevel("bar", Level.INFO); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Configuration hardcoded level already registered for bar"); underTest.levelByDomain("bar", ProcessId.WEB_SERVER, LogDomain.JMX); }
@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 @UseDataProvider("logbackLevels") public void apply_accepts_any_level_as_hardcoded_level(Level level) { LogLevelConfig config = newLogLevelConfig().immutableLevel("bar", level).build(); LoggerContext context = underTest.apply(config, props); assertThat(context.getLogger("bar").getLevel()).isEqualTo(level); }
@Test public void builder_immutableLevel_fails_with_NPE_if_logger_name_is_null() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("loggerName can't be null"); underTest.immutableLevel(null, Level.ERROR); }
@Test public void builder_immutableLevel_fails_with_IAE_if_logger_name_is_empty() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("loggerName can't be empty"); underTest.immutableLevel("", Level.ERROR); }
@Test public void builder_fails_with_ISE_if_logger_has_domain_config() { underTest.levelByDomain("pop", ProcessId.WEB_SERVER, LogDomain.JMX); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Configuration by property already registered for pop"); underTest.immutableLevel("pop", Level.DEBUG); }
@Test public void builder_fails_with_ISE_if_immutableLevel_called_twice_for_same_logger() { underTest.immutableLevel("foo", Level.INFO); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Configuration hardcoded level already registered for foo"); underTest.immutableLevel("foo", Level.DEBUG); }
@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); }