From d78b7db92a43d267fb1b1abd37db90af63edc4df Mon Sep 17 00:00:00 2001 From: brinn <brinn> Date: Fri, 22 Feb 2008 19:58:46 +0000 Subject: [PATCH] change: add support for regular expressions instead of strings SVN: 4425 --- .../common/logging/LogMonitoringAppender.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/logging/LogMonitoringAppender.java b/common/sourceTest/java/ch/systemsx/cisd/common/logging/LogMonitoringAppender.java index 8abdf9370ae..5e16109a171 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/logging/LogMonitoringAppender.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/logging/LogMonitoringAppender.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.common.logging; import java.util.HashMap; import java.util.Map; +import java.util.regex.Pattern; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Logger; @@ -38,11 +39,11 @@ public final class LogMonitoringAppender extends AppenderSkeleton private final StringBuilder eventRecorder = new StringBuilder(); - private final String messagePart; + private final Pattern regex; - private LogMonitoringAppender(String messagePart) + private LogMonitoringAppender(Pattern pattern) { - this.messagePart = messagePart; + this.regex = pattern; } private int logCount = 0; @@ -55,7 +56,18 @@ public final class LogMonitoringAppender extends AppenderSkeleton */ public static synchronized LogMonitoringAppender addAppender(LogCategory category, String messagePart) { - final LogMonitoringAppender appender = new LogMonitoringAppender(messagePart); + return addAppender(category, Pattern.compile(Pattern.quote(messagePart))); + } + + /** + * Creates an appender that monitors for <var>messagePart</var> and adds it to the {@link Logger} for + * <code>category</code> and <code>clazz</code>. + * + * @return The created appender. + */ + public static synchronized LogMonitoringAppender addAppender(LogCategory category, Pattern regex) + { + final LogMonitoringAppender appender = new LogMonitoringAppender(regex); final String loggerName = category.name(); Logger.getLogger(loggerName).addAppender(appender); appenderMap.put(appender, loggerName); @@ -100,7 +112,7 @@ public final class LogMonitoringAppender extends AppenderSkeleton { eventRecorder.append("event throwable: ").append(throwableStr).append('\n'); } - if (eventMessage.contains(messagePart) || throwableStr.contains(messagePart)) + if (regex.matcher(event.getMessage().toString()).find() || regex.matcher(getThrowableStr(event)).find()) { ++logCount; } @@ -120,19 +132,19 @@ public final class LogMonitoringAppender extends AppenderSkeleton public void verifyLogHasNotHappened() { - assert logCount == 0 : "Log snippet '" + messagePart + "' has been unexpectedly found in log:\n" + assert logCount == 0 : "Regex '" + regex + "' has been unexpectedly found in log:\n" + eventRecorder; } public void verifyLogHasHappened() { - assert logCount > 0 : "Log snippet '" + messagePart + "' has been missed in log:\n" + eventRecorder; + assert logCount > 0 : "Regex '" + regex + "' has been missed in log:\n" + eventRecorder; } public void verifyLogHappendNTimes(int n) { assert logCount == n : String.format( - "Log snippet '%s' should have found %d times, but has been found %d times.", messagePart, n, + "Log snippet '%s' should have found %d times, but has been found %d times.", regex, n, logCount); } -- GitLab