From 98f51c88c1b450817251af6615720a632b42fb3d Mon Sep 17 00:00:00 2001 From: Ceki Gulcu Date: Fri, 1 Aug 2008 21:52:22 +0000 Subject: [PATCH] started work on bug 86, http://bugzilla.slf4j.org/show_bug.cgi?id=86 --- .../src/main/java/org/slf4j/LoggerX.java | 61 +++++++++++++++++++ .../src/test/java/org/slf4j/LoggerXTest.java | 12 ++++ 2 files changed, 73 insertions(+) create mode 100644 slf4j-ext/src/main/java/org/slf4j/LoggerX.java create mode 100644 slf4j-ext/src/test/java/org/slf4j/LoggerXTest.java diff --git a/slf4j-ext/src/main/java/org/slf4j/LoggerX.java b/slf4j-ext/src/main/java/org/slf4j/LoggerX.java new file mode 100644 index 00000000..c3f4cc3c --- /dev/null +++ b/slf4j-ext/src/main/java/org/slf4j/LoggerX.java @@ -0,0 +1,61 @@ +package org.slf4j; + +import org.slf4j.helpers.MessageFormatter; +import org.slf4j.spi.LocationAwareLogger; + +/** + * A utility that provides standard mechanisms for logging certain kinds of + * activities. + * + * @author Ralph Goers + * @author Ceki Gulcu + */ +public class LoggerX { + + private static final String FQCN = LoggerX.class.getName(); + static Marker FLOW_MARKER = MarkerFactory.getMarker("FLOW"); + static Marker ENTRY_MARKER = MarkerFactory.getMarker("ENTER"); + static Marker EXIT_MARKER = MarkerFactory.getMarker("EXIT"); + + static Marker EXCEPTION_MARKER = MarkerFactory.getMarker("EXCEPTION"); + static Marker DIAG_MARKER = MarkerFactory.getMarker("DIAG"); + + static String ENTRY_MESSAGE_0 = "entry"; + static String ENTRY_MESSAGE_1 = "entry with params ({})"; + static String ENTRY_MESSAGE_2 = "entry with params ({}, {})"; + static String ENTRY_MESSAGE_3 = "entry with params ({}, {}, {})"; + static String ENTRY_MESSAGE_4 = "entry with params ({}, {}, {}, {})"; + static int ENTRY_MESSAGE_ARRAY_LEN = 5; + static String[] ENTRY_MESSAGE_ARRAY = new String[ENTRY_MESSAGE_ARRAY_LEN]; + static { + ENTRY_MARKER.add(FLOW_MARKER); + EXIT_MARKER.add(FLOW_MARKER); + ENTRY_MESSAGE_ARRAY[0] = ENTRY_MESSAGE_0; + ENTRY_MESSAGE_ARRAY[1] = ENTRY_MESSAGE_1; + ENTRY_MESSAGE_ARRAY[2] = ENTRY_MESSAGE_2; + ENTRY_MESSAGE_ARRAY[3] = ENTRY_MESSAGE_3; + ENTRY_MESSAGE_ARRAY[4] = ENTRY_MESSAGE_4; + } + + /** + * Log entry to a method + * + * @param logger + * the Logger to log with. + */ + public static void entering(Logger logger, Object... argArray) { + if (logger.isDebugEnabled(ENTRY_MARKER) + && logger instanceof LocationAwareLogger) { + String messagePattern = ""; + if(argArray.length <= ENTRY_MESSAGE_ARRAY_LEN) { + messagePattern = ENTRY_MESSAGE_ARRAY[argArray.length]; + } + + String msg = MessageFormatter.arrayFormat(messagePattern, argArray); + + ((LocationAwareLogger) logger).log(ENTRY_MARKER, FQCN, + LocationAwareLogger.ERROR_INT, msg, null); + } + } + +} diff --git a/slf4j-ext/src/test/java/org/slf4j/LoggerXTest.java b/slf4j-ext/src/test/java/org/slf4j/LoggerXTest.java new file mode 100644 index 00000000..cb7af227 --- /dev/null +++ b/slf4j-ext/src/test/java/org/slf4j/LoggerXTest.java @@ -0,0 +1,12 @@ +package org.slf4j; + +import junit.framework.TestCase; + +public class LoggerXTest extends TestCase { + + Logger logger = LoggerFactory.getLogger(this.getClass()); + + public void testSmoke() { + LoggerX.entering(logger); + } +}