public boolean containsMatch(long threshold, int level, String regex) { List<Status> filteredList = filterStatusListByTimeThreshold(sm.getCopyOfStatusList(), threshold); Pattern p = Pattern.compile(regex); for (Status status : filteredList) { if (level != status.getLevel()) { continue; } String msg = status.getMessage(); Matcher matcher = p.matcher(msg); if (matcher.lookingAt()) { return true; } } return false; }
public static void buildStr(StringBuilder sb, String indentation, Status s) { String prefix; if (s.hasChildren()) { prefix = indentation + "+ "; } else { prefix = indentation + "|-"; } if (cachingDateFormat != null) { String dateStr = cachingDateFormat.format(s.getDate()); sb.append(dateStr).append(" "); } sb.append(prefix).append(s).append(CoreConstants.LINE_SEPARATOR); if (s.getThrowable() != null) { appendThrowable(sb, s.getThrowable()); } if (s.hasChildren()) { Iterator<Status> ite = s.iterator(); while (ite.hasNext()) { Status child = ite.next(); buildStr(sb, indentation + " ", child); } } }
private void targetWarn(String val) { Status status = new WarnStatus("[" + val + "] should be one of " + Arrays.toString(ConsoleTarget.values()), this); status.add(new WarnStatus( "Using previously set target, System.out by default.", this)); addStatus(status); }
int count = 0; for (Status s : sm.getCopyOfStatusList()) { final int level = s.getEffectiveLevel(); if (level == Status.INFO) { continue; if (s.getMessage().contains(InternalLoggerFactory.class.getName())) { switch (level) { case Status.WARN: if (s.getThrowable() != null) { logger.warn(s.getMessage(), s.getThrowable()); } else { logger.warn(s.getMessage()); if (s.getThrowable() != null) { logger.warn(s.getMessage(), s.getThrowable()); } else { logger.warn(s.getMessage());
/** * Return the time of last reset. -1 if last reset time could not be found * * @return time of last reset or -1 */ public long timeOfLastReset() { List<Status> statusList = sm.getCopyOfStatusList(); if (statusList == null) return -1; int len = statusList.size(); for (int i = len - 1; i >= 0; i--) { Status s = statusList.get(i); if (CoreConstants.RESET_MSG_PREFIX.equals(s.getMessage())) { return s.getDate(); } } return -1; }
private void printStatus(StringBuilder buf, Status s) { String trClass; if (count % 2 == 0) { trClass = "even"; } else { trClass = "odd"; } buf.append(" <tr class=\"").append(trClass).append("\">\r\n"); String dateStr = SDF.format(s.getDate()); buf.append(" <td class=\"date\">").append(dateStr).append("</td>\r\n"); buf.append(" <td class=\"level\">").append(statusLevelAsString(s)) .append("</td>\r\n"); buf.append(" <td>").append(abbreviatedOrigin(s)).append("</td>\r\n"); buf.append(" <td>").append(s.getMessage()).append("</td>\r\n"); buf.append(" </tr>\r\n"); if (s.getThrowable() != null) { printThrowable(buf, s.getThrowable()); } }
@Override public void addStatusEvent(final Status status) { if (status instanceof ErrorStatus && status.getThrowable() instanceof IOException) { System.out.println("*************************LogbackListener.addStatusEvent"); throw new LoggingError(status.getMessage(), status.getThrowable()); } }
String statusLevelAsString(Status s) { switch (s.getEffectiveLevel()) { case Status.INFO: return "INFO"; case Status.WARN: return "<span class=\"warn\">WARN</span>"; case Status.ERROR: return "<span class=\"error\">ERROR</span>"; } return null; }
@Override protected void loadConfiguration(LoggingInitializationContext initializationContext, String location, LogFile logFile) { super.loadConfiguration(initializationContext, location, logFile); LoggerContext loggerContext = getLoggerContext(); stopAndReset(loggerContext); try { configureByResourceUrl(initializationContext, loggerContext, ResourceUtils.getURL(location)); } catch (Exception ex) { throw new IllegalStateException( "Could not initialize Logback logging from " + location, ex); } List<Status> statuses = loggerContext.getStatusManager().getCopyOfStatusList(); StringBuilder errors = new StringBuilder(); for (Status status : statuses) { if (status.getLevel() == Status.ERROR) { errors.append((errors.length() > 0) ? String.format("%n") : ""); errors.append(status.toString()); } } if (errors.length() > 0) { throw new IllegalStateException( String.format("Logback configuration error detected: %n%s", errors)); } }
public boolean containsMatch(String regex) { Pattern p = Pattern.compile(regex); for (Status status : sm.getCopyOfStatusList()) { String msg = status.getMessage(); Matcher matcher = p.matcher(msg); if (matcher.lookingAt()) { return true; } } return false; }
static public List<Status> filterStatusListByTimeThreshold(List<Status> rawList, long threshold) { List<Status> filteredList = new ArrayList<Status>(); for (Status s : rawList) { if (s.getDate() >= threshold) filteredList.add(s); } return filteredList; }
private StatusTO transformStatus(ch.qos.logback.core.status.Status status) { StatusTO transformed = new StatusTO(); transformed.setDate(status.getDate()); transformed.setLevel(transformStatusLevel(status.getLevel())); transformed.setMessage(status.getMessage()); return transformed; }
public boolean containsException(Class<?> exceptionType) { Iterator<Status> stati = sm.getCopyOfStatusList().iterator(); while (stati.hasNext()) { Status status = stati.next(); Throwable t = status.getThrowable(); if (t != null && t.getClass().getName().equals(exceptionType.getName())) { return true; } } return false; }
public void addStatusEvent(Status status) { if (status.getLevel() == Status.ERROR || status.getLevel() == Status.WARN) { String output = String.valueOf(status); // ignore rare appender warnings when someone attempts to log while config is being reloaded if (!output.contains("No appenders present") && !output.contains("non started appender")) { System.err.println(output); Throwable t = status.getThrowable(); if (t != null) { t.printStackTrace(System.err); } } } } });
String abbreviatedOrigin(Status s) { Object o = s.getOrigin(); if (o == null) { return null; } String fqClassName = o.getClass().getName(); int lastIndex = fqClassName.lastIndexOf(CoreConstants.DOT); if (lastIndex != -1) { return fqClassName.substring(lastIndex + 1, fqClassName.length()); } else { return fqClassName; } }
private void printStatus(StringBuilder buf, Status s) { String trClass; if (count % 2 == 0) { trClass = "even"; } else { trClass = "odd"; } buf.append(" <tr class=\"").append(trClass).append("\">\r\n"); String dateStr = SDF.format(s.getDate()); buf.append(" <td class=\"date\">").append(dateStr).append("</td>\r\n"); buf.append(" <td class=\"level\">").append(statusLevelAsString(s)) .append("</td>\r\n"); buf.append(" <td>").append(abbreviatedOrigin(s)).append("</td>\r\n"); buf.append(" <td>").append(s.getMessage()).append("</td>\r\n"); buf.append(" </tr>\r\n"); if (s.getThrowable() != null) { printThrowable(buf, s.getThrowable()); } }
@Test public void testStopThrowsException() throws Exception { receiver.start(); assertTrue(receiver.isStarted()); IOException ex = new IOException("test exception"); runner.setStopException(ex); receiver.stop(); Status status = context.getLastStatus(); assertNotNull(status); assertTrue(status instanceof ErrorStatus); assertTrue(status.getMessage().contains(ex.getMessage())); assertSame(ex, status.getThrowable()); }
public synchronized int getEffectiveLevel() { int result = level; int effLevel; Iterator it = iterator(); Status s; while (it.hasNext()) { s = (Status) it.next(); effLevel = s.getEffectiveLevel(); if (effLevel > result) { result = effLevel; } } return result; }
public int matchCount(String regex) { int count = 0; Pattern p = Pattern.compile(regex); for (Status status : sm.getCopyOfStatusList()) { String msg = status.getMessage(); Matcher matcher = p.matcher(msg); if (matcher.lookingAt()) { count++; } } return count; }