You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/02/02 20:57:24 UTC

[10/10] isis git commit: ISIS-988 Upgrade to Log4j 2.x

ISIS-988 Upgrade to Log4j 2.x

WIP
There are still some changed APIs for which I didn't find easy replacement


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c2e96cd1
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c2e96cd1
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c2e96cd1

Branch: refs/heads/ISIS-988-migrate-to-log4j2
Commit: c2e96cd1feab2422a2bc1b016aafb3cd23da95ef
Parents: a5126d2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Jan 30 18:50:20 2015 +0200
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Feb 2 19:55:38 2015 +0000

----------------------------------------------------------------------
 component/viewer/wicket/applib/pom.xml          | 20 +++----
 component/viewer/wicket/ui/pom.xml              | 21 ++++----
 core/integtestsupport/pom.xml                   |  8 +--
 core/log4j/pom.xml                              |  8 +--
 .../runtime/logging/FileSnapshotAppender.java   |  4 +-
 .../runtime/logging/IsisLoggingConfigurer.java  | 32 +++++++-----
 .../isis/core/runtime/logging/Log4jLogger.java  | 18 ++++---
 .../core/runtime/logging/LogEventEvaluator.java | 10 ++++
 .../runtime/logging/PopupSnapshotAppender.java  |  2 +-
 .../runtime/logging/SmtpExtendedAppender.java   |  6 ++-
 .../core/runtime/logging/SnapshotAppender.java  | 55 +++++++++++---------
 .../core/runtime/logging/SnapshotServer.java    |  8 +--
 .../runtime/logging/SocketSnapshotAppender.java |  5 +-
 .../runtime/logging/WebSnapshotAppender.java    |  7 ++-
 core/pom.xml                                    | 16 +++---
 core/runtime/pom.xml                            | 12 ++---
 core/viewer-restfulobjects-applib/pom.xml       | 11 ++--
 17 files changed, 137 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/component/viewer/wicket/applib/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/applib/pom.xml b/component/viewer/wicket/applib/pom.xml
index a68ae9e..7812f78 100644
--- a/component/viewer/wicket/applib/pom.xml
+++ b/component/viewer/wicket/applib/pom.xml
@@ -77,14 +77,16 @@
 
 		<!-- LOGGING DEPENDENCIES - LOG4J -->
 
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-log4j12</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
 
-	</dependencies>
+    </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/component/viewer/wicket/ui/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/pom.xml b/component/viewer/wicket/ui/pom.xml
index 11e676d..51906c6 100644
--- a/component/viewer/wicket/ui/pom.xml
+++ b/component/viewer/wicket/ui/pom.xml
@@ -134,14 +134,17 @@
 
         <!-- LOGGING DEPENDENCIES - LOG4J -->
 
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-log4j12</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
 
-	</dependencies>
+    </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/integtestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index 0f7d08f..2ce6c95 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -102,9 +102,11 @@
         </dependency>
 
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
         </dependency>
 
-	</dependencies>
+
+    </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/pom.xml
----------------------------------------------------------------------
diff --git a/core/log4j/pom.xml b/core/log4j/pom.xml
index c6d171b..38818df 100644
--- a/core/log4j/pom.xml
+++ b/core/log4j/pom.xml
@@ -61,12 +61,12 @@
         </dependency>
 
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
         </dependency>
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
         </dependency>
         
         <!-- to resolve log4j's optional dependency on javax.mail:mail:1.4 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/FileSnapshotAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/FileSnapshotAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/FileSnapshotAppender.java
index 7757a91..f5e2129 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/FileSnapshotAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/FileSnapshotAppender.java
@@ -24,7 +24,7 @@ import java.io.IOException;
 
 public class FileSnapshotAppender extends SnapshotAppender {
     
-    private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(FileSnapshotAppender.class);
+    private static final org.apache.logging.log4j.Logger LOG = org.apache.logging.log4j.LogManager.getLogger(FileSnapshotAppender.class);
     
     private String directoryPath;
     private String extension;
@@ -66,7 +66,7 @@ public class FileSnapshotAppender extends SnapshotAppender {
     protected synchronized void writeSnapshot(final String message, final String details) {
         SnapshotWriter s;
         try {
-            final String contentType = layout.getContentType();
+            final String contentType = getLayout().getContentType();
             final String fileExtension = isEmpty(extension) ? contentType.substring(contentType.indexOf('/') + 1) : extension;
             s = new SnapshotWriter(directoryPath, fileName, fileExtension, message);
             s.appendLog(details);

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/IsisLoggingConfigurer.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/IsisLoggingConfigurer.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/IsisLoggingConfigurer.java
index b5b3c71..c04f18f 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/IsisLoggingConfigurer.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/IsisLoggingConfigurer.java
@@ -28,6 +28,12 @@ import java.util.Properties;
 import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.Level;
 import org.apache.log4j.PatternLayout;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
+import org.apache.logging.log4j.core.layout.PatternLayout;
 
 public class IsisLoggingConfigurer {
 
@@ -36,7 +42,7 @@ public class IsisLoggingConfigurer {
     private boolean loggingSetup;
 
     public IsisLoggingConfigurer() {
-        this(org.apache.log4j.Level.WARN);
+        this(Level.WARN);
     }
 
     public IsisLoggingConfigurer(Level rootLoggerLevelIfFallback) {
@@ -60,9 +66,9 @@ public class IsisLoggingConfigurer {
     }
 
     private static void applyLoggingLevelFromCommandLine(final String[] args) {
-        final org.apache.log4j.Level loggingLevel = loggingLevel(args);
+        final Level loggingLevel = loggingLevel(args);
         if (loggingLevel != null) {
-            org.apache.log4j.Logger.getRootLogger().setLevel(loggingLevel);
+            LogManager.getRootLogger().setLevel(loggingLevel);
         }
     }
 
@@ -122,24 +128,24 @@ public class IsisLoggingConfigurer {
     }
 
     private void configureFallbackLogging() {
-        final org.apache.log4j.Layout layout = new org.apache.log4j.PatternLayout("%-5r [%-25.25c{1} %-10.10t %-5.5p]  %m%n");
-        final org.apache.log4j.Appender appender = new org.apache.log4j.ConsoleAppender(layout);
-        org.apache.log4j.BasicConfigurator.configure(appender);
-        org.apache.log4j.Logger.getRootLogger().setLevel(rootLoggerLevelIfFallback);
-        org.apache.log4j.Logger.getLogger("ui").setLevel(org.apache.log4j.Level.OFF);
+        final Layout layout = PatternLayout.newBuilder().withPattern("%-5r [%-25.25c{1} %-10.10t %-5.5p]  %m%n").build();
+        final Appender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
+        BasicConfigurator.configure(appender);
+        LogManager.getRootLogger().setLevel(rootLoggerLevelIfFallback);
+        LogManager.getLogger("ui").setLevel(org.apache.log4j.Level.OFF);
     }
 
-    private static org.apache.log4j.Level loggingLevel(final String[] args) {
-        org.apache.log4j.Level level = null;
+    private static Level loggingLevel(final String[] args) {
+        Level level = null;
         for (final String arg : args) {
             if (arg.equals("-" + LoggingConstants.DEBUG_OPT)) {
-                level = org.apache.log4j.Level.DEBUG;
+                level = Level.DEBUG;
                 break;
             } else if (arg.equals("-" + LoggingConstants.QUIET_OPT)) {
-                level = org.apache.log4j.Level.ERROR;
+                level = Level.ERROR;
                 break;
             } else if (arg.equals("-" + LoggingConstants.VERBOSE_OPT)) {
-                level = org.apache.log4j.Level.INFO;
+                level = Level.INFO;
                 break;
             }
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/Log4jLogger.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/Log4jLogger.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/Log4jLogger.java
index 4342ef7..3906546 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/Log4jLogger.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/Log4jLogger.java
@@ -20,22 +20,26 @@
 package org.apache.isis.core.runtime.logging;
 
 
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public abstract class Log4jLogger {
     
     public static final String PROPERTY_ROOT = "isis.logging.";
     
-    private org.apache.log4j.Logger logger;
-    private final org.apache.log4j.Level level;
+    private Logger logger;
+    private final Level level;
 
     public Log4jLogger() {
-        this(org.apache.log4j.Level.DEBUG);
+        this(Level.DEBUG);
     }
 
     public Log4jLogger(final String level) {
-        this.level = org.apache.log4j.Level.toLevel(level);
+        this.level = Level.toLevel(level);
     }
 
-    public Log4jLogger(final org.apache.log4j.Level level) {
+    public Log4jLogger(final Level level) {
         this.level = level;
     }
 
@@ -49,9 +53,9 @@ public abstract class Log4jLogger {
         log(request + "  -> " + result);
     }
 
-    private org.apache.log4j.Logger logger() {
+    private Logger logger() {
         if (logger == null) {
-            logger = org.apache.log4j.Logger.getLogger(getDecoratedClass());
+            logger = LogManager.getLogger(getDecoratedClass());
         }
         return logger;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/LogEventEvaluator.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/LogEventEvaluator.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/LogEventEvaluator.java
new file mode 100644
index 0000000..0b550a9
--- /dev/null
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/LogEventEvaluator.java
@@ -0,0 +1,10 @@
+package org.apache.isis.core.runtime.logging;
+
+import org.apache.logging.log4j.core.LogEvent;
+
+/**
+ *
+ */
+public interface LogEventEvaluator {
+    boolean isTriggeringEvent(final LogEvent event);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/PopupSnapshotAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/PopupSnapshotAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/PopupSnapshotAppender.java
index 41e30b3..c198b55 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/PopupSnapshotAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/PopupSnapshotAppender.java
@@ -34,7 +34,7 @@ import java.awt.event.WindowEvent;
 
 public class PopupSnapshotAppender extends SnapshotAppender {
 
-    public PopupSnapshotAppender(final org.apache.log4j.spi.TriggeringEventEvaluator evaluator) {
+    public PopupSnapshotAppender(final org.apache.logging.log4j.spi.TriggeringEventEvaluator evaluator) {
         super(evaluator);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SmtpExtendedAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SmtpExtendedAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SmtpExtendedAppender.java
index df48f57..2076bb8 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SmtpExtendedAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SmtpExtendedAppender.java
@@ -22,8 +22,10 @@ import java.io.UnsupportedEncodingException;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeUtility;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.SmtpAppender;
 
-public class SmtpExtendedAppender extends org.apache.log4j.net.SMTPAppender {
+public class SmtpExtendedAppender extends SmtpAppender {
 
     public SmtpExtendedAppender() {
         super();
@@ -34,7 +36,7 @@ public class SmtpExtendedAppender extends org.apache.log4j.net.SMTPAppender {
     }
 
     @Override
-    public void append(final org.apache.log4j.spi.LoggingEvent event) {
+    public void append(final LogEvent event) {
         if (evaluator.isTriggeringEvent(event)) {
             try {
                 final String subject = limitToFirstLine(String.valueOf(event.getMessage()));

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotAppender.java
index a73ecc8..9be6e48 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotAppender.java
@@ -20,39 +20,44 @@
 package org.apache.isis.core.runtime.logging;
 
 import java.util.Date;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.AbstractAppender;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.util.CyclicBuffer;
+import org.apache.logging.log4j.core.util.OptionConverter;
 
-import org.apache.log4j.helpers.CyclicBuffer;
-import org.apache.log4j.spi.TriggeringEventEvaluator;
 
-class DefaultEvaluator implements TriggeringEventEvaluator {
+class DefaultEvaluator implements LogEventEvaluator {
     @Override
-    public boolean isTriggeringEvent(final org.apache.log4j.spi.LoggingEvent event) {
-        return event.getLevel().isGreaterOrEqual(org.apache.log4j.Level.ERROR);
+    public boolean isTriggeringEvent(final LogEvent event) {
+        return event.getLevel().isMoreSpecificThan(Level.ERROR);
     }
 }
 
-public abstract class SnapshotAppender extends org.apache.log4j.AppenderSkeleton {
+public abstract class SnapshotAppender extends AbstractAppender {
     private int bufferSize = 512;
-    protected CyclicBuffer buffer = new CyclicBuffer(bufferSize);
+    protected CyclicBuffer buffer = new CyclicBuffer(SnapshotAppender.class, bufferSize);
     private boolean locationInfo = false;
-    protected TriggeringEventEvaluator triggerEvaluator;
+    protected LogEventEvaluator triggerEvaluator;
     private boolean addInfo;
 
     /**
      * The default constructor will instantiate the appender with a
-     * {@link TriggeringEventEvaluator} that will trigger on events with level
+     * {@link LogEventEvaluator} that will trigger on events with level
      * ERROR or higher.
      */
     public SnapshotAppender() {
         this(new DefaultEvaluator());
     }
 
-    public SnapshotAppender(final TriggeringEventEvaluator evaluator) {
+    public SnapshotAppender(final LogEventEvaluator evaluator) {
         this.triggerEvaluator = evaluator;
     }
 
     @Override
-    public void append(final org.apache.log4j.spi.LoggingEvent event) {
+    public void append(final LogEvent event) {
         if (shouldAppend()) {
             event.getThreadName();
             event.getNDC();
@@ -74,10 +79,10 @@ public abstract class SnapshotAppender extends org.apache.log4j.AppenderSkeleton
      * Send the contents of the cyclic buffer as an web server posting.
      */
     private void writeSnapshot(final CyclicBuffer buffer) {
-        final StringBuffer details = new StringBuffer();
-        final String header = layout.getHeader();
+        final StringBuilder details = new StringBuilder();
+        final byte[] header = getLayout().getHeader();
         if (header != null) {
-            details.append(header);
+            details.append(new String(header));
         }
 
         if (addInfo) {
@@ -86,28 +91,26 @@ public abstract class SnapshotAppender extends org.apache.log4j.AppenderSkeleton
             final String java = System.getProperty("java.vm.name") + " " + System.getProperty("java.vm.version");
             final String version = getFrameworkVersion();
 
-            final org.apache.log4j.spi.LoggingEvent infoEvent = new org.apache.log4j.spi.LoggingEvent("", org.apache.log4j.Logger.getRootLogger(), org.apache.log4j.Level.INFO, "Snapshot:- " + new Date() + "\n\t" + user + "\n\t" + system + "\n\t" + java + "\n\t" + version, null);
-            details.append(layout.format(infoEvent));
+            final LogEvent infoEvent = new Log4jLogEvent("", LogManager.getRootLogger(), Level.INFO, "Snapshot:- " + new Date() + "\n\t" + user + "\n\t" + system + "\n\t" + java + "\n\t" + version, null);
+            details.append(getLayout().format(infoEvent));
         }
 
         final int len = buffer.length();
         String message = "";
         for (int i = 0; i < len; i++) {
-            final org.apache.log4j.spi.LoggingEvent event = buffer.get();
+            final LogEvent event = buffer.get();
             message = event.getLoggerName() + ": " + event.getMessage();
-            details.append(layout.format(event));
-            if (layout.ignoresThrowable()) {
-                final String[] s = event.getThrowableStrRep();
+            details.append(getLayout().toSerializable(event));
+            if (getLayout().ignoresThrowable()) {
+                final String s = event.getThrownProxy().getExtendedStackTraceAsString();
                 if (s != null) {
-                    for (final String element : s) {
-                        details.append(element);
-                        details.append('\n');
-                    }
+                    details.append(s);
+                    details.append('\n');
                 }
             }
         }
 
-        final String footer = layout.getFooter();
+        final String footer = getLayout().getFooter();
         if (footer != null) {
             details.append(footer);
         }
@@ -154,7 +157,7 @@ public abstract class SnapshotAppender extends org.apache.log4j.AppenderSkeleton
     }
 
     public void setEvaluatorClass(final String value) {
-        triggerEvaluator = (TriggeringEventEvaluator) org.apache.log4j.helpers.OptionConverter.instantiateByClassName(value, TriggeringEventEvaluator.class, triggerEvaluator);
+        triggerEvaluator = (LogEventEvaluator) OptionConverter.instantiateByClassName(value, LogEventEvaluator.class, triggerEvaluator);
     }
 
     public void setAddInfo(final boolean addInfo) {

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotServer.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotServer.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotServer.java
index abda4a2..28eb6e1 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotServer.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SnapshotServer.java
@@ -27,15 +27,15 @@ import java.io.InputStreamReader;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.Properties;
-
-import org.apache.log4j.spi.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class SnapshotServer {
     private static final String SNAPSHOT_PROPERTIES = "snapshot.properties";
-    private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(SnapshotServer.class);
+    private static final Logger LOG = LogManager.getLogger(SnapshotServer.class);
 
     public static void main(final String[] args) {
-        org.apache.log4j.BasicConfigurator.configure();
+        org.apache.logging.log4j.core.config.Configurator.BasicConfigurator.configure();
 
         int port;
         String directoryPath;

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SocketSnapshotAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SocketSnapshotAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SocketSnapshotAppender.java
index a737db7..13492e3 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SocketSnapshotAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/SocketSnapshotAppender.java
@@ -24,14 +24,13 @@ import java.io.OutputStreamWriter;
 import java.net.ConnectException;
 import java.net.Socket;
 
-import org.apache.log4j.spi.LoggerFactory;
 
 public class SocketSnapshotAppender extends SnapshotAppender {
-    private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(SmtpSnapshotAppender.class);
+    private static final org.apache.logging.log4j.Logger LOG = org.apache.logging.log4j.LogManager.getLogger(SmtpSnapshotAppender.class);
     private int port = 9289;
     private String server;
 
-    public SocketSnapshotAppender(final org.apache.log4j.spi.TriggeringEventEvaluator evaluator) {
+    public SocketSnapshotAppender(final TriggeringEventEvaluator evaluator) {
         super(evaluator);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/WebSnapshotAppender.java
----------------------------------------------------------------------
diff --git a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/WebSnapshotAppender.java b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/WebSnapshotAppender.java
index 3dfc292..e39ceac 100644
--- a/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/WebSnapshotAppender.java
+++ b/core/log4j/src/main/java/org/apache/isis/core/runtime/logging/WebSnapshotAppender.java
@@ -28,9 +28,8 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.net.URLEncoder;
 import java.net.UnknownHostException;
-
-import org.apache.log4j.spi.LoggerFactory;
-import org.apache.log4j.spi.TriggeringEventEvaluator;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class WebSnapshotAppender extends SnapshotAppender {
     private static class HttpQueryWriter extends OutputStreamWriter {
@@ -63,7 +62,7 @@ public class WebSnapshotAppender extends SnapshotAppender {
         }
     }
 
-    private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(WebSnapshotAppender.class);
+    private static final Logger LOG = LogManager.getLogger(WebSnapshotAppender.class);
     private String proxyAddress;
     private int proxyPort = -1;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 7e8e32b..8199451 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -96,7 +96,7 @@
         <shiro.version>1.2.3</shiro.version>
 
         <slf4j.version>1.7.10</slf4j.version>
-        <log4j.version>1.2.17</log4j.version>
+        <log4j.version>2.1</log4j.version>
 
         <joda-time.version>2.3</joda-time.version>
         <guava.version>16.0.1</guava.version>
@@ -1204,18 +1204,18 @@ ${license.additional-notes}
             </dependency>    
             <dependency>
                 <groupId>org.slf4j</groupId>
-                <artifactId>slf4j-log4j12</artifactId>
-                <version>${slf4j.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.slf4j</groupId>
                 <artifactId>jcl-over-slf4j</artifactId>
                 <version>${slf4j.version}</version>
             </dependency>
 
             <dependency>
-                <groupId>log4j</groupId>
-                <artifactId>log4j</artifactId>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-core</artifactId>
+                <version>${log4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-slf4j-impl</artifactId>
                 <version>${log4j.version}</version>
             </dependency>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index caad3d4..9fff59f 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -153,14 +153,14 @@
         </dependency>
 
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
         </dependency>
-
         <dependency>
-            <!-- because DataNucleus uses log4j as its preferred logger -->
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>${log4j.version}</version>
         </dependency>
 
         <!--  for the RegisterEntities service -->

http://git-wip-us.apache.org/repos/asf/isis/blob/c2e96cd1/core/viewer-restfulobjects-applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-applib/pom.xml b/core/viewer-restfulobjects-applib/pom.xml
index 5d1198c..bbd534e 100644
--- a/core/viewer-restfulobjects-applib/pom.xml
+++ b/core/viewer-restfulobjects-applib/pom.xml
@@ -38,11 +38,12 @@
     <url>http://isis.apache.org/${relativeUrl}</url>
 
 	<dependencies>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-		</dependency>
-		
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>org.jdom</groupId>
             <artifactId>jdom</artifactId>