QPID-8232: [Broker-J] Support ability to turn off logger (cherry picked from commit 367b0805cba347a362a143da4948704f6d263118)
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/2eb9c74e Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/2eb9c74e Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/2eb9c74e Branch: refs/heads/7.0.x Commit: 2eb9c74e02a737d177da540029423e65397f2764 Parents: 55b3dea Author: Alex Rudyy <[email protected]> Authored: Sun Sep 9 22:47:36 2018 +0100 Committer: Alex Rudyy <[email protected]> Committed: Fri Nov 30 15:10:26 2018 +0000 ---------------------------------------------------------------------- .../server/logging/logback/CompositeFilter.java | 9 ++++-- .../logback/LoggerNameAndLevelFilter.java | 30 +++++++++++++++-- .../logging/logback/BrokerLoggerTest.java | 34 +++++++++++++++++++- .../logging/logback/CompositeFilterTest.java | 8 ++--- .../logback/LoggerNameAndLevelFilterTest.java | 17 ++++++++++ 5 files changed, 88 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/2eb9c74e/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/CompositeFilter.java ---------------------------------------------------------------------- diff --git a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/CompositeFilter.java b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/CompositeFilter.java index 752c80d..8438876 100644 --- a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/CompositeFilter.java +++ b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/CompositeFilter.java @@ -67,11 +67,16 @@ public class CompositeFilter extends Filter<ILoggingEvent> FilterReply reply = DENY; for(Filter<ILoggingEvent> filter : _filterList) { - reply = filter.decide(event); - if (reply == DENY || reply == ACCEPT) + FilterReply filterReply = filter.decide(event); + if (filterReply == DENY) { + reply = filterReply; break; } + if (filterReply == ACCEPT) + { + reply = filterReply; + } } if(reply == ACCEPT) { http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/2eb9c74e/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilter.java ---------------------------------------------------------------------- diff --git a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilter.java b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilter.java index 825a01d..a2c620a 100644 --- a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilter.java +++ b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilter.java @@ -70,7 +70,7 @@ public class LoggerNameAndLevelFilter extends Filter<ILoggingEvent> implements E @Override public FilterReply decide(final ILoggingEvent event) { - return event.getLevel().isGreaterOrEqual(_level) ? FilterReply.ACCEPT : FilterReply.NEUTRAL; + return getFilterReply(event.getLevel()); } }; } @@ -82,7 +82,11 @@ public class LoggerNameAndLevelFilter extends Filter<ILoggingEvent> implements E @Override public FilterReply decide(final ILoggingEvent event) { - return event.getLevel().isGreaterOrEqual(_level) && event.getLoggerName().startsWith(prefixName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL; + if (event.getLoggerName().startsWith(prefixName)) + { + return getFilterReply(event.getLevel()); + } + return FilterReply.NEUTRAL; } }; } @@ -93,12 +97,32 @@ public class LoggerNameAndLevelFilter extends Filter<ILoggingEvent> implements E @Override public FilterReply decide(final ILoggingEvent event) { - return event.getLevel().isGreaterOrEqual(_level) && event.getLoggerName().equals(loggerName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL; + if (event.getLoggerName().equals(loggerName)) + { + return getFilterReply(event.getLevel()); + } + return FilterReply.NEUTRAL; } }; } } + private FilterReply getFilterReply(final Level eventLevel) + { + if (_level == Level.OFF) + { + return FilterReply.DENY; + } + else if (eventLevel.isGreaterOrEqual(_level)) + { + return FilterReply.ACCEPT; + } + else + { + return FilterReply.NEUTRAL; + } + } + @Override public Level getEffectiveLevel(final Logger logger) { http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/2eb9c74e/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerLoggerTest.java ---------------------------------------------------------------------- diff --git a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerLoggerTest.java b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerLoggerTest.java index 0678f2e..c20b4b5 100644 --- a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerLoggerTest.java +++ b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/BrokerLoggerTest.java @@ -232,13 +232,45 @@ public class BrokerLoggerTest extends QpidTestCase errorFilter.delete(); } + public void testTurningLoggingOff() + { + Map<String, Object> fooRuleAttributes = + createBrokerNameAndLevelLogInclusionRuleAttributes("fooRule", + "org.apache.qpid.foo.*", + LogLevel.INFO); + Map<String, Object> barRuleAttributes = + createBrokerNameAndLevelLogInclusionRuleAttributes("barRule", + "org.apache.qpid.foo.bar", + LogLevel.OFF); + + _brokerLogger.createChild(BrokerLogInclusionRule.class, fooRuleAttributes); + _brokerLogger.createChild(BrokerLogInclusionRule.class, barRuleAttributes); + + Logger barLogger = LoggerFactory.getLogger("org.apache.qpid.foo.bar"); + barLogger.warn("bar message"); + + Logger fooLogger = LoggerFactory.getLogger("org.apache.qpid.foo.foo"); + fooLogger.warn("foo message"); + + assertLoggedEvent(_loggerAppender, false, "bar message", barLogger.getName(), Level.WARN); + assertLoggedEvent(_loggerAppender, false, "bar message", fooLogger.getName(), Level.WARN); + assertLoggedEvent(_loggerAppender, true, "foo message", fooLogger.getName(), Level.WARN); + } + private Map<String, Object> createBrokerNameAndLevelLogInclusionRuleAttributes(final String loggerName, final LogLevel logLevel) { + return createBrokerNameAndLevelLogInclusionRuleAttributes("test", loggerName, logLevel); + } + + private Map<String, Object> createBrokerNameAndLevelLogInclusionRuleAttributes(final String ruleName, + final String loggerName, + final LogLevel logLevel) + { Map<String, Object> attributes = new HashMap<>(); attributes.put(BrokerNameAndLevelLogInclusionRule.LOGGER_NAME, loggerName); attributes.put(BrokerNameAndLevelLogInclusionRule.LEVEL, logLevel); - attributes.put(BrokerNameAndLevelLogInclusionRule.NAME, "test"); + attributes.put(BrokerNameAndLevelLogInclusionRule.NAME, ruleName); attributes.put(ConfiguredObject.TYPE, BrokerNameAndLevelLogInclusionRule.TYPE); return attributes; } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/2eb9c74e/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/CompositeFilterTest.java ---------------------------------------------------------------------- diff --git a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/CompositeFilterTest.java b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/CompositeFilterTest.java index 751c0d9..6082b04 100644 --- a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/CompositeFilterTest.java +++ b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/CompositeFilterTest.java @@ -75,18 +75,18 @@ public class CompositeFilterTest extends QpidTestCase LogBackLogInclusionRule neutral = createRule(FilterReply.NEUTRAL); compositeFilter.addLogInclusionRule(neutral); - LogBackLogInclusionRule deny = createRule(FilterReply.DENY); - compositeFilter.addLogInclusionRule(deny); - LogBackLogInclusionRule accept = createRule(FilterReply.ACCEPT); compositeFilter.addLogInclusionRule(accept); + LogBackLogInclusionRule deny = createRule(FilterReply.DENY); + compositeFilter.addLogInclusionRule(deny); + FilterReply reply = compositeFilter.decide(mock(ILoggingEvent.class)); assertEquals("Unexpected reply", FilterReply.DENY, reply); verify(neutral.asFilter()).decide(any(ILoggingEvent.class)); verify(deny.asFilter()).decide(any(ILoggingEvent.class)); - verify(accept.asFilter(), never()).decide(any(ILoggingEvent.class)); + verify(accept.asFilter()).decide(any(ILoggingEvent.class)); } public void testRemoveLogInclusionRule() http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/2eb9c74e/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilterTest.java ---------------------------------------------------------------------- diff --git a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilterTest.java b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilterTest.java index 63d5cd1..693f383 100644 --- a/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilterTest.java +++ b/broker-plugins/logging-logback/src/test/java/org/apache/qpid/server/logging/logback/LoggerNameAndLevelFilterTest.java @@ -115,4 +115,21 @@ public class LoggerNameAndLevelFilterTest extends QpidTestCase when(event.getLoggerName()).thenReturn("org.apache.qpid"); assertEquals("Unexpected reply for non matching log leve and same logger namel", FilterReply.NEUTRAL, filter.decide(event)); } + + public void testDecideForTurnedOffLogger() throws Exception + { + LoggerNameAndLevelFilter filter = new LoggerNameAndLevelFilter("org.apache.qpid", Level.OFF); + + ILoggingEvent event = mock(ILoggingEvent.class); + when(event.getLevel()).thenReturn(Level.WARN); + when(event.getLoggerName()).thenReturn("org.apache.qpid"); + assertEquals("Unexpected reply for matching log level and same logger name", + FilterReply.DENY, + filter.decide(event)); + + when(event.getLoggerName()).thenReturn("org.apache.qpid.foo"); + assertEquals("Unexpected reply for matching log level and not same logger name", + FilterReply.NEUTRAL, + filter.decide(event)); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
