You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/07/06 16:37:05 UTC
svn commit: r1689412 - in /qpid/java/trunk/broker-core/src:
main/java/org/apache/qpid/server/logging/
main/java/org/apache/qpid/server/model/
test/java/org/apache/qpid/server/logging/
Author: rgodfrey
Date: Mon Jul 6 14:37:05 2015
New Revision: 1689412
URL: http://svn.apache.org/r1689412
Log:
QPID-6622 : [Java Broker] Add error/warn statistics to loggers
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java Mon Jul 6 14:37:05 2015
@@ -22,6 +22,7 @@ package org.apache.qpid.server.logging;
import java.util.Collection;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -43,6 +44,9 @@ public abstract class AbstractLogger<X e
{
private final static ch.qos.logback.classic.Logger ROOT_LOGGER = ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME));
+ private final AtomicLong _errorCount = new AtomicLong();
+ private final AtomicLong _warnCount = new AtomicLong();
+
protected AbstractLogger(Map<String, Object> attributes, ConfiguredObject<?> parent)
{
super(parentsMap(parent), attributes);
@@ -114,6 +118,26 @@ public abstract class AbstractLogger<X e
return getObjectFactory().createAsync(childClass, attributes, this);
}
+ public final long getErrorCount()
+ {
+ return _errorCount.get();
+ }
+
+ public final long getWarnCount()
+ {
+ return _warnCount.get();
+ }
+
+ protected final void incrementErrorCount()
+ {
+ _errorCount.incrementAndGet();
+ }
+
+ protected final void incrementWarnCount()
+ {
+ _warnCount.incrementAndGet();
+ }
+
public void stopLogging()
{
Appender appender = ROOT_LOGGER.getAppender(getName());
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java Mon Jul 6 14:37:05 2015
@@ -22,6 +22,7 @@ package org.apache.qpid.server.logging;
import java.util.Map;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
@@ -52,7 +53,22 @@ public class BrokerConsoleLoggerImpl ext
@Override
protected Appender<ILoggingEvent> createAppenderInstance(Context context)
{
- ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
+ ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<ILoggingEvent>()
+ {
+ @Override
+ protected void append(final ILoggingEvent eventObject)
+ {
+ super.append(eventObject);
+ switch(eventObject.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setPattern(getLayout());
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java Mon Jul 6 14:37:05 2015
@@ -27,9 +27,11 @@ import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.Context;
+import ch.qos.logback.core.rolling.RollingFileAppender;
import org.apache.qpid.server.logging.logback.RollingPolicyDecorator;
import org.apache.qpid.server.logging.logback.RolloverWatcher;
@@ -178,7 +180,24 @@ public class BrokerFileLoggerImpl extend
@Override
protected Appender<ILoggingEvent> createAppenderInstance(Context loggerContext)
{
- return new RollingFileAppenderFactory().createRollingFileAppender(this, loggerContext);
+ final RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<ILoggingEvent>()
+ {
+ @Override
+ protected void append(final ILoggingEvent eventObject)
+ {
+ super.append(eventObject);
+ switch(eventObject.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
+ return RollingFileAppenderFactory.configureRollingFileAppender(this, loggerContext,
+ appender);
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java Mon Jul 6 14:37:05 2015
@@ -23,6 +23,7 @@ package org.apache.qpid.server.logging;
import java.util.Map;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.net.SocketAppender;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
@@ -91,14 +92,22 @@ public class BrokerLogbackSocketLoggerIm
protected Appender<ILoggingEvent> createAppenderInstance(Context loggerContext)
{
SocketAppender socketAppender = new SocketAppender()
- {
- @Override
- protected void append(final ILoggingEvent event)
- {
- augmentWithMDC(event);
- super.append(event);
- }
- };
+ {
+ @Override
+ protected void append(final ILoggingEvent event)
+ {
+ augmentWithMDC(event);
+ super.append(event);
+ switch(event.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
socketAppender.setPort(_port);
socketAppender.setRemoteHost(_remoteHost);
socketAppender.setIncludeCallerData(_includeCallerData);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java Mon Jul 6 14:37:05 2015
@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.Context;
@@ -59,7 +60,22 @@ public class BrokerMemoryLoggerImpl exte
{
throw new IllegalStateException("RecordEventAppender is already created");
}
- RecordEventAppender appender = new RecordEventAppender(getMaxRecords());
+ RecordEventAppender appender = new RecordEventAppender(getMaxRecords())
+ {
+ @Override
+ protected void append(final ILoggingEvent eventObject)
+ {
+ super.append(eventObject);
+ switch(eventObject.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
_logRecorder = new LogRecorder(appender);
return appender;
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java Mon Jul 6 14:37:05 2015
@@ -36,9 +36,10 @@ import org.apache.qpid.server.logging.lo
public class RollingFileAppenderFactory
{
- public RollingFileAppender<ILoggingEvent> createRollingFileAppender(FileLoggerSettings fileLoggerSettings, Context loggerContext)
+ public static RollingFileAppender<ILoggingEvent> configureRollingFileAppender(FileLoggerSettings fileLoggerSettings,
+ Context loggerContext,
+ final RollingFileAppender<ILoggingEvent> appender)
{
- RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
appender.setFile(fileLoggerSettings.getFileName());
appender.setAppend(true);
appender.setContext(loggerContext);
@@ -85,7 +86,7 @@ public class RollingFileAppenderFactory
}
- class DailyTriggeringPolicy extends SizeAndTimeBasedFNATP<ILoggingEvent>
+ static class DailyTriggeringPolicy extends SizeAndTimeBasedFNATP<ILoggingEvent>
{
private final boolean _rollOnRestart;
private boolean _isFirst = true;
@@ -123,7 +124,7 @@ public class RollingFileAppenderFactory
}
- class SizeTriggeringPolicy extends SizeBasedTriggeringPolicy<ILoggingEvent>
+ static class SizeTriggeringPolicy extends SizeBasedTriggeringPolicy<ILoggingEvent>
{
private final boolean _rollOnRestart;
private boolean _isFirst = true;
@@ -151,7 +152,7 @@ public class RollingFileAppenderFactory
}
- class SimpleRollingPolicy extends FixedWindowRollingPolicy
+ static class SimpleRollingPolicy extends FixedWindowRollingPolicy
{
private int _maxFiles;
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java Mon Jul 6 14:37:05 2015
@@ -27,9 +27,11 @@ import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.Context;
+import ch.qos.logback.core.rolling.RollingFileAppender;
import org.apache.qpid.server.logging.logback.RollingPolicyDecorator;
import org.apache.qpid.server.logging.logback.RolloverWatcher;
@@ -181,7 +183,25 @@ public class VirtualHostFileLoggerImpl e
@Override
protected Appender<ILoggingEvent> createAppenderInstance(Context loggerContext)
{
- return new RollingFileAppenderFactory().createRollingFileAppender(this, loggerContext);
+ final RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<ILoggingEvent>()
+ {
+ @Override
+ protected void append(final ILoggingEvent eventObject)
+ {
+ super.append(eventObject);
+ switch(eventObject.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
+ RollingFileAppenderFactory.configureRollingFileAppender(this, loggerContext,
+ appender);
+ return appender;
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java Mon Jul 6 14:37:05 2015
@@ -27,4 +27,10 @@ public interface BrokerLogger<X extends
boolean isVirtualHostLogEventExcluded();
void stopLogging();
+
+ @ManagedStatistic
+ long getErrorCount();
+
+ @ManagedStatistic
+ long getWarnCount();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java Mon Jul 6 14:37:05 2015
@@ -24,4 +24,10 @@ package org.apache.qpid.server.model;
public interface VirtualHostLogger <X extends VirtualHostLogger<X>> extends ConfiguredObject<X>
{
void stopLogging();
+
+ @ManagedStatistic
+ long getErrorCount();
+
+ @ManagedStatistic
+ long getWarnCount();
}
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java Mon Jul 6 14:37:05 2015
@@ -61,8 +61,6 @@ public class BrokerLoggerTest extends Qp
public void setUp() throws Exception
{
super.setUp();
- _loggerAppender = new ListAppender();
- _loggerAppender.setName(APPENDER_NAME);
_taskExecutor = new TaskExecutorImpl();
_taskExecutor.start();
@@ -85,6 +83,24 @@ public class BrokerLoggerTest extends Qp
@Override
public Appender<ILoggingEvent> createAppenderInstance(Context context)
{
+ _loggerAppender = new ListAppender<ILoggingEvent>()
+ {
+ @Override
+ protected void append(final ILoggingEvent eventObject)
+ {
+ super.append(eventObject);
+ switch(eventObject.getLevel().toInt())
+ {
+ case Level.ERROR_INT:
+ incrementErrorCount();
+ break;
+ case Level.WARN_INT:
+ incrementWarnCount();
+ }
+ }
+ };
+ _loggerAppender.setName(APPENDER_NAME);
+
return _loggerAppender;
}
};
@@ -207,6 +223,50 @@ public class BrokerLoggerTest extends Qp
}
}
+ public void testStatistics()
+ {
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put("loggerName", "org.apache.qpid.*");
+ attributes.put("level", LogLevel.WARN);
+ attributes.put("name", "test");
+ attributes.put("type", BrokerNameAndLevelFilter.TYPE);
+
+
+ final BrokerLoggerFilter filter = _brokerLogger.createChild(BrokerLoggerFilter.class, attributes);
+
+ assertEquals(0l, _brokerLogger.getWarnCount());
+ assertEquals(0l, _brokerLogger.getErrorCount());
+
+ Logger messageLogger = LoggerFactory.getLogger("org.apache.qpid.test");
+ messageLogger.warn("warn");
+ assertEquals(1l, _brokerLogger.getWarnCount());
+ assertEquals(0l, _brokerLogger.getErrorCount());
+
+ messageLogger.error("error");
+ assertEquals(1l, _brokerLogger.getWarnCount());
+ assertEquals(1l, _brokerLogger.getErrorCount());
+
+ filter.delete();
+
+ attributes = new HashMap<>();
+ attributes.put("loggerName", "org.apache.qpid.*");
+ attributes.put("level", LogLevel.ERROR);
+ attributes.put("name", "test");
+ attributes.put("type", BrokerNameAndLevelFilter.TYPE);
+
+
+ _brokerLogger.createChild(BrokerLoggerFilter.class, attributes);
+
+ messageLogger.warn("warn");
+ assertEquals(1l, _brokerLogger.getWarnCount());
+ assertEquals(1l, _brokerLogger.getErrorCount());
+ messageLogger.error("error");
+ assertEquals(1l, _brokerLogger.getWarnCount());
+ assertEquals(2l, _brokerLogger.getErrorCount());
+
+
+
+ }
private LogRecord findLogRecord(String message, Collection<LogRecord> logRecords)
{
for (LogRecord record: logRecords)
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java?rev=1689412&r1=1689411&r2=1689412&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java Mon Jul 6 14:37:05 2015
@@ -44,14 +44,12 @@ public class RollingFileAppenderFactoryT
public static final String MAX_FILE_SIZE = "100mb";
public static final int MAX_HISTORY = 10;
- private RollingFileAppenderFactory _helper;
private FileLoggerSettings _settings;
@Override
public void setUp() throws Exception
{
super.setUp();
- _helper = new RollingFileAppenderFactory();
_settings = mock(FileLoggerSettings.class);
when(_settings.getFileName()).thenReturn(FILE_NAME);
when(_settings.getLayout()).thenReturn(LAYOUT);
@@ -65,7 +63,9 @@ public class RollingFileAppenderFactoryT
public void testCreateRollingFileAppenderDailyRolling()
{
- RollingFileAppender<ILoggingEvent> appender = _helper.createRollingFileAppender(_settings, mock(Context.class));
+ RollingFileAppender<ILoggingEvent> appender = RollingFileAppenderFactory.configureRollingFileAppender(_settings,
+ mock(Context.class),
+ new RollingFileAppender<ILoggingEvent>());
assertEquals("Unexpected appender file name", FILE_NAME, appender.getFile());
@@ -88,7 +88,9 @@ public class RollingFileAppenderFactoryT
when(_settings.isRollDaily()).thenReturn(Boolean.FALSE);
when(_settings.isCompressOldFiles()).thenReturn(Boolean.FALSE);
- RollingFileAppender<ILoggingEvent> appender = _helper.createRollingFileAppender(_settings, mock(Context.class));
+ RollingFileAppender<ILoggingEvent> appender = RollingFileAppenderFactory.configureRollingFileAppender(_settings,
+ mock(Context.class),
+ new RollingFileAppender<ILoggingEvent>());
assertEquals("Unexpected appender file name", FILE_NAME, appender.getFile());
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org