public List<String> getLogs(Level level) { return TestLogbackAppender.events.stream() .filter(e -> e.getLoggerName().equals(loggerClass.getName())) .filter(e -> e.getLevel().levelStr.equals(level.name())) .map(LoggingEvent::getFormattedMessage) .collect(Collectors.toList()); }
public boolean hasLog(Level level, String message) { return TestLogbackAppender.events.stream() .filter(e -> e.getLoggerName().equals(loggerClass.getName())) .filter(e -> e.getLevel().levelStr.equals(level.name())) .anyMatch(e -> e.getFormattedMessage().equals(message)); }
@Test public void shouldLogErrorWhenRegisterCommandWithoutSenderAnnotation() { //see https://github.com/MovingBlocks/Terasology/issues/2679 Appender<ILoggingEvent> appender = mockAppender(); ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).addAppender(appender); systemUnderTest.register(new SystemWithCommandMissingSenderAnnotation()); systemUnderTest.initialise(); ArgumentCaptor<LoggingEvent> loggingEventArgumentCaptor = ArgumentCaptor.forClass(LoggingEvent.class); verify(appender).doAppend(loggingEventArgumentCaptor.capture()); List<String> allErrorLogMessages = loggingEventArgumentCaptor.getAllValues().stream() .filter(e -> e.getLevel().isGreaterOrEqual(Level.ERROR)) .map(LoggingEvent::getFormattedMessage) .collect(toList()); String expectedMessage = "Command commandWithoutSenderAnnotation provided by " + "SystemWithCommandMissingSenderAnnotation contains a EntityRef without @Sender annotation, " + "may cause a NullPointerException"; assertThat(allErrorLogMessages, hasItem(expectedMessage)); }
for (int i = 0; i < count; i++) { le = (LoggingEvent) cyclicBufferAppender.get(i); logMsgs = logMsgs + ( i > 0?",{":"{") + "\"time\":\"" + dateFormat.format(le.getTimeStamp()) + "\",\"level\":\"" + le.getLevel().levelStr + "\",\"component\":\"" + le.getLoggerName() + "\",\"message\":\"" + TextStringFormatter.forJSON(le.getFormattedMessage()) + "\"}";
@Override public FilterReply decide(LoggingEvent loggingEvent) { if (!(isStarted() && loggingEvent.getLevel().isGreaterOrEqual(Level.WARN))) { return FilterReply.NEUTRAL; } return FilterReply.DENY; }
@Override public FilterReply decide(E eventObject) { if (!isStarted()) { return FilterReply.NEUTRAL; } LoggingEvent event = (LoggingEvent) eventObject; if (this.levelMin != null && !event.getLevel().isGreaterOrEqual(levelMin)) { return DENY; } if (this.levelMax != null && event.getLevel().toInt() > levelMax.toInt()) { return DENY; } if (acceptOnMatch) { return ACCEPT; } else { return NEUTRAL; } }
@Override public FilterReply decide(E eventObject) { if (!isStarted()) { return FilterReply.NEUTRAL; } LoggingEvent event = (LoggingEvent) eventObject; if (this.levelMin != null && !event.getLevel().isGreaterOrEqual(levelMin)) { return DENY; } if (this.levelMax != null && event.getLevel().toInt() > levelMax.toInt()) { return DENY; } if (acceptOnMatch) { return ACCEPT; } else { return NEUTRAL; } }
@Override public FilterReply decide(E eventObject) { if (!isStarted()) { return FilterReply.NEUTRAL; } LoggingEvent event = (LoggingEvent) eventObject; if (this.levelMin != null && !event.getLevel().isGreaterOrEqual(levelMin)) { return DENY; } if (this.levelMax != null && event.getLevel().toInt() > levelMax.toInt()) { return DENY; } if (acceptOnMatch) { return ACCEPT; } else { return NEUTRAL; } }
@Override public FilterReply decide(final LoggingEvent event) { if (!isStarted()) return FilterReply.NEUTRAL; return levels.contains(event.getLevel()) ? FilterReply.NEUTRAL : FilterReply.DENY; }
@Override public FilterReply decide(E eventObject) { if (!isStarted()) { return FilterReply.NEUTRAL; } LoggingEvent event = (LoggingEvent) eventObject; if (this.levelMin != null && !event.getLevel().isGreaterOrEqual(levelMin)) { return DENY; } if (this.levelMax != null && event.getLevel().toInt() > levelMax.toInt()) { return DENY; } if (acceptOnMatch) { return ACCEPT; } else { return NEUTRAL; } }
@Override public FilterReply decide(E eventObject) { if (!isStarted()) { return FilterReply.NEUTRAL; } LoggingEvent event = (LoggingEvent) eventObject; if (this.levelMin != null && !event.getLevel().isGreaterOrEqual(levelMin)) { return DENY; } if (this.levelMax != null && event.getLevel().toInt() > levelMax.toInt()) { return DENY; } if (acceptOnMatch) { return ACCEPT; } else { return NEUTRAL; } }
public void sometimesFails() { log.warn("This is a warning."); log.info("This is purely informational."); List<LoggingEvent> logs = (List<LoggingEvent>) TestNGLogCollector.getRawLogs(); assertThat(logs) .hasSize(2) .anySatisfy(e -> assertThat(e.getLevel()).isEqualTo(Level.WARN)) .anySatisfy(e -> assertThat(e.getLevel()).isEqualTo(Level.INFO)); invocationCount++; if (invocationCount > 8) { Assert.fail(); } } }
@Test public void shouldLogWarning() { verify(appender, atLeastOnce()).doAppend(logCaptor.capture()); LoggingEvent loggingEvent = logCaptor.getValue(); assertThat(loggingEvent.getLevel()).isEqualTo(Level.WARN); assertThat(loggingEvent.getMessage()).containsIgnoringCase("It is recommended to use HoverflyRule with @ClassRule"); }
@Override protected void append(LoggingEvent event) { if ((event.getArgumentArray() != null) && (event.getArgumentArray().length > 0)) { Object logMessage = event.getArgumentArray()[0]; if (logMessage instanceof GroupedTimingStatistics && chartGenerator != null) { chartGenerator.appendData((GroupedTimingStatistics) logMessage); hasUnflushedData = true; lastAppendedEventLevel = event.getLevel(); //output the graph if necessary to any attached appenders if ((numLoggedStatistics.incrementAndGet() % getDataPointsPerGraph()) == 0) { flush(); } } } }
@Test public void test() { { final Logger logger = LoggerFactory.getLogger("should.not.be.collected"); logger.warn("This should not be collected!"); } { final Logger logger = LoggerFactory.getLogger("test.logger"); logger.warn("This should be collected!"); } assertThat(collector.getLogs()).hasSize(1); assertThat(collector.getLogs().get(0)).contains("This should be collected!"); List<LoggingEvent> rawLogs = (List<LoggingEvent>) collector.getRawLogs(); assertTrue(rawLogs.stream().allMatch(e -> e.getLevel() == Level.WARN)); } }
@Override protected void append(LoggingEvent event) { if ((event.getArgumentArray() != null) && (event.getArgumentArray().length > 0)) { Object logMessage = event.getArgumentArray()[0]; if (logMessage instanceof GroupedTimingStatistics && chartGenerator != null) { chartGenerator.appendData((GroupedTimingStatistics) logMessage); hasUnflushedData = true; lastAppendedEventLevel = event.getLevel(); //output the graph if necessary to any attached appenders if ((numLoggedStatistics.incrementAndGet() % getDataPointsPerGraph()) == 0) { flush(); } } } }
@Test public void testInvalidRequestParamets() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); when(request.getParameter("templateid")).thenReturn(null); when(request.getParameter("docid")).thenReturn(null); ProcessDocumentServlet processDocServlet = new ProcessDocumentServlet(); processDocServlet.doGet(request, response); verify(loggingAppender).doAppend(loggingEventArgumentCaptor.capture()); final LoggingEvent loggingEvent = loggingEventArgumentCaptor.getValue(); assertEquals(Level.ERROR, loggingEvent.getLevel()); assertEquals(MessageFormat.format(ProcessDocumentServlet.INVALID_PARAMS, "null", "null"), loggingEvent.getFormattedMessage()); }
@Test public void testInvalidRequestParamets() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); when(request.getParameter("templateid")).thenReturn(null); when(request.getParameter("docid")).thenReturn(null); ProcessDocumentServlet processDocServlet = new ProcessDocumentServlet(); processDocServlet.doGet(request, response); verify(loggingAppender).doAppend(loggingEventArgumentCaptor.capture()); final LoggingEvent loggingEvent = loggingEventArgumentCaptor.getValue(); assertEquals(Level.ERROR, loggingEvent.getLevel()); assertEquals(MessageFormat.format(ProcessDocumentServlet.INVALID_PARAMS, "null", "null"), loggingEvent.getFormattedMessage()); }
@Test public void shouldWarnWhenStartHoverflyInstanceTwice() { // Given // Reference: https://dzone.com/articles/unit-testing-asserting-line ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME); final Appender mockAppender = mock(Appender.class); when(mockAppender.getName()).thenReturn("test-shouldWarnWhenStartHoverflyInstanceTwice"); root.addAppender(mockAppender); startDefaultHoverfly(); // when hoverfly.start(); // then verify(mockAppender).doAppend(argThat(argument -> { LoggingEvent event = (LoggingEvent) argument; return event.getLevel().levelStr.equals("WARN") && event.getMessage().contains("Local Hoverfly is already running"); })); }
@Test public void testWithEnabledLevel() throws Exception { logger.setLevel(Level.DEBUG); client.run(); client.close(); ILoggingEvent rcvdEvent = appender.getLastEvent(); assertEquals(event.getLoggerName(), rcvdEvent.getLoggerName()); assertEquals(event.getLevel(), rcvdEvent.getLevel()); assertEquals(event.getMessage(), rcvdEvent.getMessage()); }