You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2013/07/21 02:51:34 UTC
svn commit: r1505248 - in /logging/log4j/log4j2/trunk: slf4j-impl/
slf4j-impl/src/main/java/org/slf4j/helpers/
slf4j-impl/src/main/java/org/slf4j/impl/
slf4j-impl/src/test/java/org/apache/logging/slf4j/ src/changes/
Author: rgoers
Date: Sun Jul 21 00:51:33 2013
New Revision: 1505248
URL: http://svn.apache.org/r1505248
Log:
LOG4J2-165 - The slf4j-ext jar is now an optional dependency of the SLF4J bridge.
Added:
logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/EventDataConverter.java
logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/OptionalTest.java
- copied, changed from r1505229, logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java
Modified:
logging/log4j/log4j2/trunk/slf4j-impl/pom.xml
logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/slf4j-impl/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/slf4j-impl/pom.xml?rev=1505248&r1=1505247&r2=1505248&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/slf4j-impl/pom.xml (original)
+++ logging/log4j/log4j2/trunk/slf4j-impl/pom.xml Sun Jul 21 00:51:33 2013
@@ -40,6 +40,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-ext</artifactId>
+ <optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -62,6 +63,55 @@
<scope>test</scope>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>**/*Test.java</exclude>
+ </excludes>
+ </configuration>
+ <executions>
+ <execution>
+ <id>default-tests</id>
+ <phase>test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ <excludes>
+ <exclude>**/OptionalTest.java</exclude>
+ </excludes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>test-optional</id>
+ <phase>test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <excludes>
+ <exclude>**/LoggerTest.java</exclude>
+ <exclude>**/MarkerTest.java</exclude>
+ </excludes>
+ <includes>
+ <include>**/OptionalTest.java</include>
+ </includes>
+ <classpathDependencyExcludes>
+ <classpathDependencyExcludes>org.slf4j:slf4j-ext</classpathDependencyExcludes>
+ </classpathDependencyExcludes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
<reporting>
<plugins>
<plugin>
Added: logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/EventDataConverter.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/EventDataConverter.java?rev=1505248&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/EventDataConverter.java (added)
+++ logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/EventDataConverter.java Sun Jul 21 00:51:33 2013
@@ -0,0 +1,34 @@
+package org.slf4j.helpers;
+
+import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.message.ParameterizedMessage;
+import org.apache.logging.log4j.message.StructuredDataMessage;
+import org.slf4j.ext.EventData;
+
+import java.util.Map;
+
+/**
+ *
+ */
+public class EventDataConverter {
+
+ public Message convertEvent(final String s1, final Object[] objects, final Throwable throwable) {
+ Message msg;
+ try {
+ final EventData data = (objects != null && objects[0] instanceof EventData) ? (EventData) objects[0] :
+ new EventData(s1);
+ msg = new StructuredDataMessage(data.getEventId(), data.getMessage(), data.getEventType());
+ for (final Map.Entry entry : data.getEventMap().entrySet()) {
+ final String key = entry.getKey().toString();
+ if (EventData.EVENT_TYPE.equals(key) || EventData.EVENT_ID.equals(key) ||
+ EventData.EVENT_MESSAGE.equals(key)) {
+ continue;
+ }
+ ((StructuredDataMessage) msg).put(entry.getKey().toString(), entry.getValue().toString());
+ }
+ } catch (final Exception ex) {
+ msg = new ParameterizedMessage(s1, objects, throwable);
+ }
+ return msg;
+ }
+}
Modified: logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java?rev=1505248&r1=1505247&r2=1505248&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java (original)
+++ logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java Sun Jul 21 00:51:33 2013
@@ -16,18 +16,15 @@
*/
package org.slf4j.impl;
-import java.util.Map;
-
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.ParameterizedMessage;
import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.logging.log4j.message.StructuredDataMessage;
import org.apache.logging.log4j.spi.AbstractLogger;
import org.apache.logging.log4j.spi.AbstractLoggerWrapper;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
-import org.slf4j.ext.EventData;
+import org.slf4j.helpers.EventDataConverter;
import org.slf4j.spi.LocationAwareLogger;
/**
@@ -40,11 +37,13 @@ public class SLF4JLogger implements Loca
private final boolean eventLogger;
private final AbstractLoggerWrapper logger;
private final String name;
+ private final EventDataConverter converter;
public SLF4JLogger(final AbstractLogger logger, final String name) {
this.logger = new AbstractLoggerWrapper(logger, name, null);
eventLogger = "EventLogger".equals(name);
this.name = name;
+ this.converter = createConverter();
}
@Override
@@ -485,23 +484,8 @@ public class SLF4JLogger implements Loca
return;
}
Message msg;
- if (eventLogger && marker != null && marker.contains(EVENT_MARKER)) {
- try {
- final EventData data = (objects != null && objects[0] instanceof EventData) ? (EventData) objects[0] :
- new EventData(s1);
- msg = new StructuredDataMessage(data.getEventId(), data.getMessage(), data.getEventType());
- for (final Map.Entry entry : data.getEventMap().entrySet()) {
- final String key = entry.getKey().toString();
- if (EventData.EVENT_TYPE.equals(key) || EventData.EVENT_ID.equals(key) ||
- EventData.EVENT_MESSAGE.equals(key)) {
- continue;
- }
- ((StructuredDataMessage) msg).put(entry.getKey().toString(), entry.getValue().toString());
- }
- } catch (final Exception ex) {
- msg = new ParameterizedMessage(s1, objects, throwable);
- }
-
+ if (eventLogger && marker != null && marker.contains(EVENT_MARKER) && converter != null) {
+ msg = converter.convertEvent(s1, objects, throwable);
} else if (objects == null) {
msg = new SimpleMessage(s1);
} else {
@@ -518,6 +502,15 @@ public class SLF4JLogger implements Loca
return name;
}
+ private EventDataConverter createConverter() {
+ try {
+ Class<?> clazz = Class.forName("org.slf4j.ext.EventData");
+ return new EventDataConverter();
+ } catch (ClassNotFoundException cnfe) {
+ return null;
+ }
+ }
+
private Level getLevel(final int i) {
switch (i) {
Copied: logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/OptionalTest.java (from r1505229, logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java)
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/OptionalTest.java?p2=logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/OptionalTest.java&p1=logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java&r1=1505229&r2=1505248&rev=1505248&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java (original)
+++ logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/OptionalTest.java Sun Jul 21 00:51:33 2013
@@ -30,15 +30,10 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
-import org.slf4j.ext.EventData;
-import org.slf4j.ext.EventLogger;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
-import org.slf4j.impl.SLF4JLogger;
-import org.slf4j.spi.LocationAwareLogger;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import static org.junit.Assert.*;
@@ -46,7 +41,7 @@ import static org.junit.Assert.*;
/**
*
*/
-public class LoggerTest {
+public class OptionalTest {
private static final String CONFIG = "log4j-test1.xml";
private static LoggerContext ctx;
@@ -65,106 +60,14 @@ public class LoggerTest {
StatusLogger.getLogger().reset();
}
- Logger logger = LoggerFactory.getLogger("LoggerTest");
- XLogger xlogger = XLoggerFactory.getXLogger("LoggerTest");
-
- @Test
- public void basicFlow() {
- xlogger.entry();
- verify("List", "o.a.l.s.LoggerTest entry MDC{}" + Constants.LINE_SEP);
- xlogger.exit();
- verify("List", "o.a.l.s.LoggerTest exit MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void simpleFlow() {
- xlogger.entry(CONFIG);
- verify("List", "o.a.l.s.LoggerTest entry with (log4j-test1.xml) MDC{}" + Constants.LINE_SEP);
- xlogger.exit(0);
- verify("List", "o.a.l.s.LoggerTest exit with (0) MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void throwing() {
- xlogger.throwing(new IllegalArgumentException("Test Exception"));
- verify("List", "o.a.l.s.LoggerTest throwing MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void catching() {
- try {
- throw new NullPointerException();
- } catch (final Exception e) {
- xlogger.catching(e);
- verify("List", "o.a.l.s.LoggerTest catching MDC{}" + Constants.LINE_SEP);
- }
- }
-
- @Test
- public void debug() {
- logger.debug("Debug message");
- verify("List", "o.a.l.s.LoggerTest Debug message MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void debugNoParms() {
- logger.debug("Debug message {}");
- verify("List", "o.a.l.s.LoggerTest Debug message {} MDC{}" + Constants.LINE_SEP);
- logger.debug("Debug message {}", (Object[]) null);
- verify("List", "o.a.l.s.LoggerTest Debug message {} MDC{}" + Constants.LINE_SEP);
- ((LocationAwareLogger)logger).log(null, SLF4JLogger.class.getName(), LocationAwareLogger.DEBUG_INT,
- "Debug message {}", null, null);
- verify("List", "o.a.l.s.LoggerTest Debug message {} MDC{}" + Constants.LINE_SEP);
- }
-
-
- @Test
- public void debugWithParms() {
- logger.debug("Hello, {}", "World");
- verify("List", "o.a.l.s.LoggerTest Hello, World MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void mdc() {
-
- MDC.put("TestYear", "2010");
- logger.debug("Debug message");
- verify("List", "o.a.l.s.LoggerTest Debug message MDC{TestYear=2010}" + Constants.LINE_SEP);
- MDC.clear();
- logger.debug("Debug message");
- verify("List", "o.a.l.s.LoggerTest Debug message MDC{}" + Constants.LINE_SEP);
- }
-
- @Test
- public void testRootLogger() {
- final Logger l = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- assertNotNull("No Root Logger", l);
- assertEquals(Logger.ROOT_LOGGER_NAME, l.getName());
- }
-
- @Test
- public void doubleSubst() {
- logger.debug("Hello, {}", "Log4j {}");
- verify("List", "o.a.l.s.LoggerTest Hello, Log4j {} MDC{}" + Constants.LINE_SEP);
- xlogger.debug("Hello, {}", "Log4j {}");
- verify("List", "o.a.l.s.LoggerTest Hello, Log4j Log4j {} MDC{}" + Constants.LINE_SEP);
- }
+ Logger logger = LoggerFactory.getLogger("EventLogger");
+ Marker marker = MarkerFactory.getMarker("EVENT");
@Test
public void testEventLogger() {
- MDC.put("loginId", "JohnDoe");
- MDC.put("ipAddress", "192.168.0.120");
- MDC.put("locale", Locale.US.getDisplayName());
- final EventData data = new EventData();
- data.setEventType("Transfer");
- data.setEventId("Audit@18060");
- data.setMessage("Transfer Complete");
- data.put("ToAccount", "123456");
- data.put("FromAccount", "123457");
- data.put("Amount", "200.00");
- EventLogger.logEvent(data);
+ logger.info(marker, "This is a test");
MDC.clear();
- verify("EventLogger", "o.a.l.s.LoggerTest Transfer [Audit@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete" + Constants.LINE_SEP);
+ verify("EventLogger", "o.a.l.s.OptionalTest This is a test" + Constants.LINE_SEP);
}
@SuppressWarnings("unchecked")
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1505248&r1=1505247&r2=1505248&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Sun Jul 21 00:51:33 2013
@@ -21,6 +21,9 @@
</properties>
<body>
<release version="2.0-beta9" date="soon, very soon" description="Bug fixes and enhancements">
+ <action issue="LOG4J2-165" dev="rgoers" type="fix">
+ The slf4j-ext jar is now an optional dependency of the SLF4J bridge.
+ </action>
<action issue="LOG4J2-318" dev="rgoers" type="update">
Allow shutdown hook to be disabled in the configuration.
</action>