Skip to content

Commit

Permalink
Merge branch '1.13.x' into 1.14.x
Browse files Browse the repository at this point in the history
  • Loading branch information
shakuzen committed Feb 5, 2025
2 parents 98069ef + b5c11a9 commit f97c715
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ public Log4j2Metrics(Iterable<Tag> tags, LoggerContext loggerContext) {
public void bindTo(MeterRegistry registry) {
Configuration configuration = loggerContext.getConfiguration();
LoggerConfig rootLoggerConfig = configuration.getRootLogger();
rootLoggerConfig.addFilter(getOrCreateMetricsFilterAndStart(registry));
MetricsFilter metricsFilter = getOrCreateMetricsFilterAndStart(registry);
rootLoggerConfig.addFilter(metricsFilter);

loggerContext.getConfiguration()
.getLoggers()
Expand All @@ -93,16 +94,16 @@ public void bindTo(MeterRegistry registry) {
}
Filter logFilter = loggerConfig.getFilter();

if (logFilter instanceof CompositeFilter
&& Arrays.stream(((CompositeFilter) logFilter).getFiltersArray())
.anyMatch(innerFilter -> innerFilter instanceof MetricsFilter)) {
if (metricsFilter.equals(logFilter)) {
return;
}

if (logFilter instanceof MetricsFilter) {
if (logFilter instanceof CompositeFilter
&& Arrays.asList(((CompositeFilter) logFilter).getFiltersArray()).contains(metricsFilter)) {
return;
}
loggerConfig.addFilter(getOrCreateMetricsFilterAndStart(registry));

loggerConfig.addFilter(metricsFilter);
});

loggerContext.updateLoggers(configuration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,41 @@ void multipleRegistriesCanBeBound() {

}

@Test
void multipleRegistriesCanBeBoundWithNonRootLoggerContext() {
LoggerContext loggerContext = new LoggerContext("test");

LoggerConfig loggerConfig = new LoggerConfig("com.test", Level.INFO, false);
Configuration configuration = loggerContext.getConfiguration();
configuration.getRootLogger().setLevel(Level.INFO);
configuration.addLogger("com.test", loggerConfig);
loggerContext.updateLoggers(configuration);

MeterRegistry registry2 = new SimpleMeterRegistry();

Log4j2Metrics log4j2Metrics = new Log4j2Metrics(emptyList(), loggerContext);
log4j2Metrics.bindTo(registry);

// verify root logger
Logger logger = loggerContext.getLogger(Log4j2MetricsTest.class);
logger.info("Hello, world!");
assertThat(registry.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(1);

// verify other logger
Logger logger2 = loggerContext.getLogger("com.test");
logger2.info("Using other logger than root logger");
assertThat(registry.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(2);

log4j2Metrics.bindTo(registry2);

logger.info("Hello, world!");
assertThat(registry.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(3);
assertThat(registry2.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(1);

logger2.info("Using other logger than root logger");
assertThat(registry.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(4);
// this final check does not pass as the log event is not properly counted
assertThat(registry2.get("log4j2.events").tags("level", "info").counter().count()).isEqualTo(2);
}

}

0 comments on commit f97c715

Please sign in to comment.