Skip to content

Commit

Permalink
Use updated logmanager; add full MDC/NDC support; tighter LoggingEven…
Browse files Browse the repository at this point in the history
…t integration; use JBLM logging mechanism to log events
  • Loading branch information
dmlloyd committed Apr 25, 2012
1 parent 6c65931 commit 47ad66f
Show file tree
Hide file tree
Showing 12 changed files with 555 additions and 131 deletions.
29 changes: 22 additions & 7 deletions pom.xml
Expand Up @@ -40,6 +40,12 @@
</parent>

<dependencies>
<dependency>
<groupId>org.jboss.modules</groupId>
<artifactId>jboss-modules</artifactId>
<version>1.1.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
Expand All @@ -48,12 +54,12 @@
<dependency>
<groupId>org.jboss.logmanager</groupId>
<artifactId>jboss-logmanager</artifactId>
<version>1.2.0.GA</version>
<version>1.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.0.CR2</version>
<version>3.1.0.GA</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -90,8 +96,21 @@
<excludes>
<exclude>META-INF/**</exclude>
<exclude>org/apache/log4j/Hierarchy.class</exclude>
<exclude>org/apache/log4j/Hierarchy$*.class</exclude>
<exclude>org/apache/log4j/Category.class</exclude>
<exclude>org/apache/log4j/Category$*.class</exclude>
<exclude>org/apache/log4j/Logger.class</exclude>
<exclude>org/apache/log4j/Logger$*.class</exclude>
<exclude>org/apache/log4j/LogManager.class</exclude>
<exclude>org/apache/log4j/LogManager$*.class</exclude>
<exclude>org/apache/log4j/MDC.class</exclude>
<exclude>org/apache/log4j/MDC$*.class</exclude>
<exclude>org/apache/log4j/NDC.class</exclude>
<exclude>org/apache/log4j/NDC$*.class</exclude>
<exclude>org/apache/log4j/spi/LoggingEvent.class</exclude>
<exclude>org/apache/log4j/spi/LoggingEvent$*.class</exclude>
<exclude>org/apache/log4j/spi/NOPLogger.class</exclude>
<exclude>org/apache/log4j/spi/NOPLogger$*.class</exclude>
</excludes>
</filter>
</filters>
Expand All @@ -101,19 +120,15 @@
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties>
<property>
<name>java.util.logging.manager</name>
<value>org.jboss.logmanager.LogManager</value>
</property>
<property>
<name>org.jboss.logging.provider</name>
<value>jboss</value>
</property>
</systemProperties>
<runOrder>alphabetical</runOrder>
</configuration>
</plugin>
</plugins>
Expand Down
66 changes: 44 additions & 22 deletions src/main/java/org/apache/log4j/Category.java
Expand Up @@ -50,7 +50,7 @@ public class Category implements AppenderAttachable {
final org.jboss.logmanager.Logger jblmLogger;

protected Category(String name) {
jblmLogger = JBossLogManagerFacade.getJbossLogger(name);
jblmLogger = JBossLogManagerFacade.getJBossLogger(name);
}

public void addAppender(Appender newAppender) {
Expand All @@ -63,13 +63,10 @@ public void assertLog(boolean assertion, String msg) {
}

public void callAppenders(LoggingEvent event) {
final List<Appender> appenders = JBossAppenderHandler.getAllAppenders(jblmLogger);
for (Appender appender : appenders) {
appender.doAppend(event);
}
jblmLogger.logRaw(event.getLogRecord());
}

org.jboss.logmanager.Logger getJbossLogger() {
org.jboss.logmanager.Logger getJBossLogger() {
return jblmLogger;
}

Expand All @@ -78,37 +75,47 @@ void closeNestedAppenders() {
}

public void debug(Object message) {
forcedLog(FQCN, Level.DEBUG, message, null);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.DEBUG)) {
forcedLog(FQCN, Level.DEBUG, message, null);
}
}

public void debug(Object message, Throwable t) {
forcedLog(FQCN, Level.DEBUG, message, t);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.DEBUG)) {
forcedLog(FQCN, Level.DEBUG, message, t);
}
}

public void error(Object message) {
forcedLog(FQCN, Level.ERROR, message, null);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.ERROR)) {
forcedLog(FQCN, Level.ERROR, message, null);
}
}

public void error(Object message, Throwable t) {
forcedLog(FQCN, Level.ERROR, message, t);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.ERROR)) {
forcedLog(FQCN, Level.ERROR, message, t);
}
}

public static Logger exists(String name) {
return LogManager.exists(name);
}

public void fatal(Object message) {
forcedLog(FQCN, Level.FATAL, message, null);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.FATAL)) {
forcedLog(FQCN, Level.FATAL, message, null);
}
}

public void fatal(Object message, Throwable t) {
forcedLog(FQCN, Level.FATAL, message, t);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.FATAL)) {
forcedLog(FQCN, Level.FATAL, message, t);
}
}

protected void forcedLog(String fqcn, Priority level, Object message, Throwable t) {
if (jblmLogger.isLoggable(JBossLevelMapping.getLevelFor(level))) {
callAppenders(new LoggingEvent(fqcn, this, level, message, t));
}
callAppenders(new LoggingEvent(fqcn, this, level, message, t));
}

public boolean getAdditivity() {
Expand Down Expand Up @@ -215,11 +222,15 @@ protected String getResourceBundleString(String key) {
}

public void info(Object message) {
forcedLog(FQCN, Level.INFO, message, null);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.INFO)) {
forcedLog(FQCN, Level.INFO, message, null);
}
}

public void info(Object message, Throwable t) {
forcedLog(FQCN, Level.INFO, message, t);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.INFO)) {
forcedLog(FQCN, Level.INFO, message, t);
}
}

public boolean isAttached(Appender appender) {
Expand Down Expand Up @@ -261,15 +272,21 @@ public void l7dlog(Priority priority, String key, Object[] params, Throwable t)
}

public void log(Priority priority, Object message, Throwable t) {
forcedLog(FQCN, priority, message, t);
if (jblmLogger.isLoggable(JBossLevelMapping.getLevelFor(priority))) {
forcedLog(FQCN, priority, message, t);
}
}

public void log(Priority priority, Object message) {
forcedLog(FQCN, priority, message, null);
if (jblmLogger.isLoggable(JBossLevelMapping.getLevelFor(priority))) {
forcedLog(FQCN, priority, message, null);
}
}

public void log(String callerFQCN, Priority level, Object message, Throwable t) {
forcedLog(callerFQCN, level, message, t);
if (jblmLogger.isLoggable(JBossLevelMapping.getLevelFor(level))) {
forcedLog(callerFQCN, level, message, t);
}
}

private void fireRemoveAppenderEvent(final LoggerRepository repository, final Appender appender) {
Expand Down Expand Up @@ -308,6 +325,7 @@ public void setAdditivity(boolean additive) {
jblmLogger.setUseParentHandlers(additive);
}

@SuppressWarnings("unused")
final void setHierarchy(LoggerRepository repository) {
// no-op
}
Expand All @@ -332,10 +350,14 @@ public static void shutdown() {
}

public void warn(Object message) {
forcedLog(FQCN, Level.WARN, message, null);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.WARN)) {
forcedLog(FQCN, Level.WARN, message, null);
}
}

public void warn(Object message, Throwable t) {
forcedLog(FQCN, Level.WARN, message, t);
if (jblmLogger.isLoggable(org.jboss.logmanager.Level.WARN)) {
forcedLog(FQCN, Level.WARN, message, t);
}
}
}
8 changes: 4 additions & 4 deletions src/main/java/org/apache/log4j/Hierarchy.java
Expand Up @@ -54,7 +54,7 @@ public class Hierarchy implements LoggerRepository, RendererSupport, ThrowableRe

public Hierarchy(Logger root) {
listeners = new CopyOnWriteArraySet<HierarchyEventListener>();
jblmRootLogger = JBossLogManagerFacade.getJbossRootLogger();
jblmRootLogger = JBossLogManagerFacade.getJBossRootLogger();
jblmRootLogger.setLevel(JBossLevelMapping.getLevelFor(root.getLevel()));
defaultFactory = new DefaultCategoryFactory();
rendererMap = new RendererMap();
Expand Down Expand Up @@ -98,7 +98,7 @@ public void setThreshold(String levelStr) {
@Override
public void setThreshold(Level l) {
if (l != null) {
JBossLogManagerFacade.getJbossRootLogger().setLevel(JBossLevelMapping.getLevelFor(l));
JBossLogManagerFacade.getJBossRootLogger().setLevel(JBossLevelMapping.getLevelFor(l));
}
}

Expand All @@ -117,7 +117,7 @@ void fireRemoveAppenderEvent(Category logger, Appender appender) {

@Override
public Level getThreshold() {
return JBossLevelMapping.getPriorityFor(JBossLogManagerFacade.getJbossRootLogger().getLevel());
return JBossLevelMapping.getPriorityFor(JBossLogManagerFacade.getJBossRootLogger().getLevel());
}

@Override
Expand Down Expand Up @@ -152,7 +152,7 @@ public Logger getRootLogger() {

@Override
public boolean isDisabled(int level) {
return JBossLevelMapping.getPriorityFor(JBossLogManagerFacade.getJbossRootLogger().getLevel()).toInt() > level;
return JBossLevelMapping.getPriorityFor(JBossLogManagerFacade.getJBossRootLogger().getLevel()).toInt() > level;
}

@Deprecated
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/apache/log4j/JBossAppenderHandler.java
Expand Up @@ -59,7 +59,7 @@ protected void doPublish(final ExtLogRecord record) {
loggerName = JBL_ROOT_NAME;
}
if (loggerName.equals(logger.getName())) {
final LoggingEvent event = new JBossLoggingEvent(record, JBossLogManagerFacade.getLogger(logger));
final LoggingEvent event = new LoggingEvent(record, JBossLogManagerFacade.getLogger(logger));
final List<Appender> appenders = getAllAppenders(logger);
for (Appender appender : appenders) {
if (new JBossFilterWrapper(appender.getFilter(), true).isLoggable(record)) {
Expand All @@ -75,7 +75,7 @@ public void flush() {

@Override
public void close() throws SecurityException {
checkAccess();
checkAccess(this);
closeAppenders(logger);
}

Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/apache/log4j/JBossFilterWrapper.java
Expand Up @@ -2,6 +2,8 @@
import java.util.logging.LogRecord;

import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

import org.jboss.logmanager.ExtLogRecord;

/**
Expand All @@ -22,7 +24,7 @@ public boolean isLoggable(final LogRecord record) {
final ExtLogRecord extRec = ExtLogRecord.wrap(record);
Filter filter = filterChain;
while (filter != null) {
final int result = filter.decide(new JBossLoggingEvent(extRec, Logger.getLogger(record.getLoggerName())));
final int result = filter.decide(new LoggingEvent(extRec, Logger.getLogger(record.getLoggerName())));
switch (result) {
case Filter.DENY: return false;
case Filter.ACCEPT: return true;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/org/apache/log4j/JBossLevelMapping.java
Expand Up @@ -11,7 +11,7 @@
*
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
class JBossLevelMapping {
public class JBossLevelMapping {

public static final org.jboss.logmanager.Level DEFAULT_LEVEL = org.jboss.logmanager.Level.DEBUG;
public static final Level DEFAULT_LOG4J_LEVEL = Level.DEBUG;
Expand Down Expand Up @@ -47,7 +47,7 @@ private JBossLevelMapping() {
*
* @return the log4j logging level or {@code null} if it cold not be found.
*/
static Level getPriorityFor(java.util.logging.Level level) {
public static Level getPriorityFor(java.util.logging.Level level) {
final Level p;
return (p = priorityMap.get(level)) == null ? DEFAULT_LOG4J_LEVEL : p;
}
Expand All @@ -59,7 +59,7 @@ static Level getPriorityFor(java.util.logging.Level level) {
*
* @return the log4j logging level or {@code null} if it cold not be found.
*/
static Level getPriorityFor(int level) {
public static Level getPriorityFor(int level) {
final Level p;
for (java.util.logging.Level l : priorityMap.keySet()) {
if (l.intValue() == level) {
Expand All @@ -76,7 +76,7 @@ static Level getPriorityFor(int level) {
*
* @return the jboss-log-manager level or by default {@link org.jboss.logmanager.Level#DEBUG}.
*/
static java.util.logging.Level getLevelFor(Priority level) {
public static java.util.logging.Level getLevelFor(Priority level) {
if (level == null) {
return DEFAULT_LEVEL;
}
Expand Down

0 comments on commit 47ad66f

Please sign in to comment.