MetricsBase(ViewContext ctx) { super(ctx); cutoffs = new ArrayList<>(); // cutoff has to be in seconds long now = Time.now(); cutoffs.add((now - 60 * 1000) / 1000); cutoffs.add((now - 300 * 1000) / 1000); cutoffs.add((now - 900 * 1000) / 1000); cutoffs.add((now - 3600 * 1000) / 1000); cutoffs.add((now - 21600 * 1000) / 1000); cutoffs.add((now - 43200 * 1000) / 1000); cutoffs.add((now - 84600 * 1000) / 1000); Log log = LogFactory.getLog(ErrorsAndWarningsBlock.class); if (log instanceof Log4JLogger) { appender = Log4jWarningErrorMetricsAppender.findAppender(); } }
@Test public void testInfoDebugTrace() { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.INFO, "test message 1", 2); logMessages(Level.DEBUG, "test message 2", 2); logMessages(Level.TRACE, "test message 3", 2); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); Assert.assertEquals(0, appender.getWarningMessagesAndCounts(cutoff).get(0) .size()); }
void setupAppender(int cleanupIntervalSeconds, long messageAgeLimitSeconds, int maxUniqueMessages) { removeAppender(); appender = new Log4jWarningErrorMetricsAppender(cleanupIntervalSeconds, messageAgeLimitSeconds, maxUniqueMessages); Logger.getRootLogger().addAppender(appender); }
@Test public void testErrorCounts() throws Exception { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.ERROR, "test message 1", 2); logMessages(Level.ERROR, "test message 2", 3); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(5, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Thread.sleep(1000); cutoff.add(Time.now() / 1000); logMessages(Level.ERROR, "test message 3", 2); Assert.assertEquals(2, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(7, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorCounts(cutoff).get(1).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(1).longValue()); }
logMessages(Level.ERROR, "test message 1", 2); logMessages(Level.ERROR, "test message 2", 3); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Map<String, Log4jWarningErrorMetricsAppender.Element> errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); Map<String, Log4jWarningErrorMetricsAppender.Element> warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(2, errorsMap.size()); Assert.assertEquals(0, warningsMap.size()); cutoff.add(Time.now() / 1000); logMessages(Level.ERROR, "test message 3", 2); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningMessagesAndCounts(cutoff).size()); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(3, errorsMap.size()); Assert.assertEquals(0, warningsMap.size()); Assert.assertTrue(errorsMap.containsKey("test message 3")); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(1); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(1); Assert.assertEquals(1, errorsMap.size()); Assert.assertEquals(0, warningsMap.size());
Log4jWarningErrorMetricsAppender.findAppender(); if (appender == null) { return; appender.getErrorMessagesAndCounts(cutoff); List<Map<String, Log4jWarningErrorMetricsAppender.Element>> warningsData = appender.getWarningMessagesAndCounts(cutoff); Map<String, List<Map<String, Log4jWarningErrorMetricsAppender.Element>>> sources = new HashMap<>();
@Test public void testPurge() throws Exception { setupAppender(2, 1, 1); logMessages(Level.ERROR, "test message 1", 1); cutoff.clear(); cutoff.add(0L); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); Thread.sleep(3000); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); setupAppender(2, 1000, 2); logMessages(Level.ERROR, "test message 1", 3); logMessages(Level.ERROR, "test message 2", 2); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(5, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); logMessages(Level.ERROR, "test message 3", 3); Thread.sleep(2000); Assert.assertEquals(8, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); }
@Override protected void render(Block html) { if (appender == null) { return; } values = appender.getErrorCounts(getCutoffs()); super.render(html); } }
@Override protected void render(Block html) { if (appender == null) { return; } values = appender.getWarningCounts(getCutoffs()); super.render(html); } }
@Test public void testWarningCounts() throws Exception { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.WARN, "test message 1", 2); logMessages(Level.WARN, "test message 2", 3); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(5, appender.getWarningCounts(cutoff).get(0).longValue()); Thread.sleep(1000); cutoff.add(Time.now() / 1000); logMessages(Level.WARN, "test message 3", 2); Assert.assertEquals(2, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(1).longValue()); Assert .assertEquals(7, appender.getWarningCounts(cutoff).get(0).longValue()); Assert .assertEquals(2, appender.getWarningCounts(cutoff).get(1).longValue()); }
logMessages(Level.ERROR, "test message 1", 2); logMessages(Level.ERROR, "test message 2", 3); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Map<String, Log4jWarningErrorMetricsAppender.Element> errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); Map<String, Log4jWarningErrorMetricsAppender.Element> warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(2, errorsMap.size()); Assert.assertEquals(0, warningsMap.size()); cutoff.add(Time.now() / 1000); logMessages(Level.ERROR, "test message 3", 2); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningMessagesAndCounts(cutoff).size()); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(3, errorsMap.size()); Assert.assertEquals(0, warningsMap.size()); Assert.assertTrue(errorsMap.containsKey("test message 3")); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(1); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(1); Assert.assertEquals(1, errorsMap.size()); Assert.assertEquals(0, warningsMap.size());
@Test public void testPurge() throws Exception { setupAppender(2, 1, 1); logMessages(Level.ERROR, "test message 1", 1); cutoff.clear(); cutoff.add(0L); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); Thread.sleep(3000); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); setupAppender(2, 1000, 2); logMessages(Level.ERROR, "test message 1", 3); logMessages(Level.ERROR, "test message 2", 2); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(5, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); logMessages(Level.ERROR, "test message 3", 3); Thread.sleep(2000); Assert.assertEquals(8, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); }
@Test public void testInfoDebugTrace() { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.INFO, "test message 1", 2); logMessages(Level.DEBUG, "test message 2", 2); logMessages(Level.TRACE, "test message 3", 2); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorMessagesAndCounts(cutoff).get(0) .size()); Assert.assertEquals(0, appender.getWarningMessagesAndCounts(cutoff).get(0) .size()); }
@Test public void testWarningCounts() throws Exception { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.WARN, "test message 1", 2); logMessages(Level.WARN, "test message 2", 3); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(5, appender.getWarningCounts(cutoff).get(0).longValue()); Thread.sleep(1000); cutoff.add(Time.now() / 1000); logMessages(Level.WARN, "test message 3", 2); Assert.assertEquals(2, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(0, appender.getErrorCounts(cutoff).get(1).longValue()); Assert .assertEquals(7, appender.getWarningCounts(cutoff).get(0).longValue()); Assert .assertEquals(2, appender.getWarningCounts(cutoff).get(1).longValue()); }
logMessages(Level.WARN, "test message 1", 2); logMessages(Level.WARN, "test message 2", 3); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Map<String, Log4jWarningErrorMetricsAppender.Element> errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); Map<String, Log4jWarningErrorMetricsAppender.Element> warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(2, warningsMap.size()); cutoff.add(Time.now() / 1000); logMessages(Level.WARN, "test message 3", 2); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningMessagesAndCounts(cutoff).size()); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(3, warningsMap.size()); Assert.assertTrue(warningsMap.containsKey("test message 3")); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(1); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(1); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(1, warningsMap.size());
Log log = LogFactory.getLog(NMErrorsAndWarningsPage.class); if (log instanceof Log4JLogger) { Log4jWarningErrorMetricsAppender appender = Log4jWarningErrorMetricsAppender.findAppender(); if (appender != null) { addErrorsAndWarningsLink = true;
void setupAppender(int cleanupIntervalSeconds, long messageAgeLimitSeconds, int maxUniqueMessages) { removeAppender(); appender = new Log4jWarningErrorMetricsAppender(cleanupIntervalSeconds, messageAgeLimitSeconds, maxUniqueMessages); Logger.getRootLogger().addAppender(appender); }
@Test public void testErrorCounts() throws Exception { cutoff.clear(); setupAppender(100, 100, 100); cutoff.add(0L); logMessages(Level.ERROR, "test message 1", 2); logMessages(Level.ERROR, "test message 2", 3); Assert.assertEquals(1, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(5, appender.getErrorCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Thread.sleep(1000); cutoff.add(Time.now() / 1000); logMessages(Level.ERROR, "test message 3", 2); Assert.assertEquals(2, appender.getErrorCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningCounts(cutoff).size()); Assert.assertEquals(7, appender.getErrorCounts(cutoff).get(0).longValue()); Assert.assertEquals(2, appender.getErrorCounts(cutoff).get(1).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(0).longValue()); Assert .assertEquals(0, appender.getWarningCounts(cutoff).get(1).longValue()); }
logMessages(Level.WARN, "test message 1", 2); logMessages(Level.WARN, "test message 2", 3); Assert.assertEquals(1, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(1, appender.getWarningMessagesAndCounts(cutoff).size()); Map<String, Log4jWarningErrorMetricsAppender.Element> errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); Map<String, Log4jWarningErrorMetricsAppender.Element> warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(2, warningsMap.size()); cutoff.add(Time.now() / 1000); logMessages(Level.WARN, "test message 3", 2); Assert.assertEquals(2, appender.getErrorMessagesAndCounts(cutoff).size()); Assert.assertEquals(2, appender.getWarningMessagesAndCounts(cutoff).size()); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(0); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(0); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(3, warningsMap.size()); Assert.assertTrue(warningsMap.containsKey("test message 3")); errorsMap = appender.getErrorMessagesAndCounts(cutoff).get(1); warningsMap = appender.getWarningMessagesAndCounts(cutoff).get(1); Assert.assertEquals(0, errorsMap.size()); Assert.assertEquals(1, warningsMap.size());
if (log instanceof Log4JLogger) { Log4jWarningErrorMetricsAppender appender = Log4jWarningErrorMetricsAppender.findAppender(); if (appender != null) { addErrorsAndWarningsLink = true;