[slf4j-dev] svn commit: r1284 - in slf4j/trunk/slf4j-ext/src: main/java/org/slf4j/ext test/java/org/slf4j/dummyExt
rgoers at slf4j.org
rgoers at slf4j.org
Tue Mar 3 08:26:08 CET 2009
Author: rgoers
Date: Tue Mar 3 08:26:07 2009
New Revision: 1284
Modified:
slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java
slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/XLoggerTest.java
Log:
Fix for bug 128 - Allow logging level to be specified on catching and throwing
Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java
==============================================================================
--- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java (original)
+++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java Tue Mar 3 08:26:07 2009
@@ -47,6 +47,30 @@
ENTRY_MESSAGE_ARRAY[4] = ENTRY_MESSAGE_4;
}
+ public enum Level {
+ TRACE("TRACE", LocationAwareLogger.TRACE_INT),
+ DEBUG("DEBUG", LocationAwareLogger.DEBUG_INT),
+ INFO("INFO", LocationAwareLogger.INFO_INT),
+ WARN("WARN", LocationAwareLogger.WARN_INT),
+ ERROR("ERROR", LocationAwareLogger.ERROR_INT);
+
+ private final String name;
+ private final int level;
+
+ public String toString() {
+ return this.name;
+ }
+
+ public int intValue() {
+ return this.level;
+ }
+
+ private Level(String name, int level) {
+ this.name = name;
+ this.level = level;
+ }
+ }
+
/**
* Given an underlying logger, construct an XLogger
*
@@ -106,7 +130,7 @@
}
/**
- * Log an exception being thrown
+ * Log an exception being thrown. The generated log event uses Level ERROR.
*
* @param throwable
* the exception being caught.
@@ -119,7 +143,21 @@
}
/**
- * Log an exception being caught
+ * Log an exception being thrown allowing the log level to be specified.
+ *
+ * @param level the logging level to use.
+ * @param throwable
+ * the exception being caught.
+ */
+ public void throwing(Level level, Throwable throwable) {
+ if (instanceofLAL) {
+ ((LocationAwareLogger) logger).log(THROWING_MARKER, FQCN,
+ level.level, "throwing", throwable);
+ }
+ }
+
+ /**
+ * Log an exception being caught. The generated log event uses Level ERROR.
*
* @param throwable
* the exception being caught.
@@ -131,6 +169,20 @@
}
}
+ /**
+ * Log an exception being caught allowing the log level to be specified.
+ *
+ * @param level the logging level to use.
+ * @param throwable
+ * the exception being caught.
+ */
+ public void catching(Level level, Throwable throwable) {
+ if (instanceofLAL) {
+ ((LocationAwareLogger) logger).log(CATCHING_MARKER, FQCN,
+ level.level, "catching", throwable);
+ }
+ }
+
private static String buildMessagePattern(int len) {
StringBuilder sb = new StringBuilder();
sb.append(" entry with (");
Modified: slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/XLoggerTest.java
==============================================================================
--- slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/XLoggerTest.java (original)
+++ slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/XLoggerTest.java Tue Mar 3 08:26:07 2009
@@ -68,6 +68,12 @@
assertEquals(t.toString(), le.getThrowableStrRep()[0]);
}
+ void verifyWithLevelAndException(LoggingEvent le, XLogger.Level level, String expectedMsg, Throwable t) {
+ verify(le, expectedMsg);
+ assertEquals(t.toString(), le.getThrowableStrRep()[0]);
+ assertEquals(le.getLevel().toString(), level.toString());
+ }
+
public void testEntering() {
XLogger logger = XLoggerFactory.getXLogger("UnitTest");
logger.entry();
@@ -96,8 +102,12 @@
XLogger logger = XLoggerFactory.getXLogger("UnitTest");
Throwable t = new UnsupportedOperationException("Test");
logger.throwing(t);
- assertEquals(1, listAppender.list.size());
+ logger.throwing(XLogger.Level.DEBUG,t);
+ assertEquals(2, listAppender.list.size());
verifyWithException((LoggingEvent) listAppender.list.get(0), "throwing", t);
+ LoggingEvent event = (LoggingEvent)listAppender.list.get(1);
+ verifyWithLevelAndException((LoggingEvent) listAppender.list.get(1), XLogger.Level.DEBUG,
+ "throwing", t);
}
public void testCaught() {
@@ -110,14 +120,17 @@
} catch (Exception ex) {
t = ex;
logger.catching(ex);
+ logger.catching(XLogger.Level.DEBUG, ex);
}
verifyWithException((LoggingEvent) listAppender.list.get(0), "catching", t);
+ verifyWithLevelAndException((LoggingEvent) listAppender.list.get(1), XLogger.Level.DEBUG,
+ "catching", t);
}
// See http://bugzilla.slf4j.org/show_bug.cgi?id=114
public void testLocationExtraction_Bug114() {
XLogger logger = XLoggerFactory.getXLogger("UnitTest");
- int line = 121; // next line is line number 121
+ int line = 134; // next line is line number 134
logger.exit();
logger.debug("hello");
More information about the slf4j-dev
mailing list