You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2015/05/26 19:21:57 UTC

[01/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Repository: struts
Updated Branches:
  refs/heads/master 8c2b321aa -> 73ef38d72


WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Switch to latest log4j2 version


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

Branch: refs/heads/master
Commit: 340312ed3f335e10134f518bceec23230da67e22
Parents: ffe0e20
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 12:25:23 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 12:25:23 2015 +0200

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/340312ed/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b99e47e..b2acd47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,7 +90,7 @@
         <asm.version>3.3</asm.version>
         <asm5.version>5.0.2</asm5.version>
         <tiles.version>2.0.6</tiles.version>
-        <log4j2.version>2.2</log4j2.version>
+        <log4j2.version>2.3</log4j2.version>
 
         <!-- SCM Site Configuration -->
         <site.mainDirectory>${project.build.directory}/site</site.mainDirectory>


[12/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Mark current xwork logging implementation as deprecated so it can be removed with 3.0


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

Branch: refs/heads/master
Commit: 26279424f00d4003db7b7bd749f71f6939fc3602
Parents: 93a307b
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 21:49:53 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 21:49:53 2015 +0200

----------------------------------------------------------------------
 .../src/main/java/com/opensymphony/xwork2/util/logging/Logger.java  | 1 +
 .../java/com/opensymphony/xwork2/util/logging/LoggerFactory.java    | 1 +
 .../main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java | 1 +
 .../com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java | 1 +
 .../xwork2/util/logging/commons/CommonsLoggerFactory.java           | 1 +
 .../java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java    | 1 +
 .../com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java  | 1 +
 .../com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java   | 1 +
 .../xwork2/util/logging/log4j2/Log4j2LoggerFactory.java             | 1 +
 .../com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java     | 1 +
 .../opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java  | 1 +
 11 files changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/Logger.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/Logger.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/Logger.java
index 408cb0a..e7da798 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/Logger.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/Logger.java
@@ -18,6 +18,7 @@ package com.opensymphony.xwork2.util.logging;
 /**
  * Main logger interface for logging things
  */
+@Deprecated
 public interface Logger {
 
     void trace(String msg, String... args);

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java
index 0e7445b..29b70df 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java
@@ -30,6 +30,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 /**
  * Creates loggers.  Static accessor will lazily try to decide on the best factory if none specified.
  */
+@Deprecated
 public abstract class LoggerFactory {
 
     private static final ReadWriteLock lock = new ReentrantReadWriteLock();

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java
index 876b2c7..a513ed2 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerUtils.java
@@ -21,6 +21,7 @@ import java.util.List;
 /**
  * Logging utility methods
  */
+@Deprecated
 public class LoggerUtils {
 
     /**

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java
index a06f647..6ee4e0f 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLogger.java
@@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
 /**
  * Simple logger that delegates to commons logging
  */
+@Deprecated
 public class CommonsLogger implements Logger {
     
     private Log log;

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLoggerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLoggerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLoggerFactory.java
index 3979e9c..0e02293 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLoggerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/commons/CommonsLoggerFactory.java
@@ -22,6 +22,7 @@ import org.apache.commons.logging.LogFactory;
 /**
  * Creates commons-logging-backed loggers
  */
+@Deprecated
 public class CommonsLoggerFactory extends LoggerFactory {
 
     @Override

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java
index 38540ce..1a11346 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLogger.java
@@ -23,6 +23,7 @@ import java.util.logging.Level;
 /**
  * Delegates to jdk logger.  Maps fatal to Level.SEVERE along with error.
  */
+@Deprecated
 public class JdkLogger implements Logger {
     
     private java.util.logging.Logger log;

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java
index af8b677..dbf719c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/jdk/JdkLoggerFactory.java
@@ -21,6 +21,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
 /**
  * Creates jdk loggers
  */
+@Deprecated
 public class JdkLoggerFactory extends LoggerFactory {
 
     @Override

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java
index 44a10fd..228a860 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java
@@ -21,6 +21,7 @@ import com.opensymphony.xwork2.util.logging.LoggerUtils;
 /**
  * Simple logger that delegates to log4j2 logging
  */
+@Deprecated
 public class Log4j2Logger implements Logger {
 
     private org.apache.logging.log4j.Logger log;

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java
index 73b8898..dd2799d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java
@@ -26,6 +26,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  *   -Dxwork.loggerFactory=com.opensymphony.xwork2.util.logging.log4j2.Log4j2LoggerFactory
  * </pre>
  */
+@Deprecated
 public class Log4j2LoggerFactory extends LoggerFactory {
 
     @Override

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java
index 5374db3..10acaf8 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java
@@ -21,6 +21,7 @@ import com.opensymphony.xwork2.util.logging.LoggerUtils;
 /**
  * Simple logger that delegates to slf4j logging
  */
+@Deprecated
 public class Slf4jLogger implements Logger {
     
     private org.slf4j.Logger log;

http://git-wip-us.apache.org/repos/asf/struts/blob/26279424/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java
index 0b85fbd..77a8030 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java
@@ -26,6 +26,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  *   -Dxwork.loggerFactory=com.opensymphony.xwork2.util.logging.slf4j.Slf4jLoggerFactory
  * </pre>
  */
+@Deprecated
 public class Slf4jLoggerFactory extends LoggerFactory {
 
     @Override


[04/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
index f9eb4c7..1806573 100644
--- a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
+++ b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
@@ -24,8 +24,6 @@ package org.apache.struts2;
 import com.opensymphony.xwork2.Action;
 import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.DefaultActionProxyFactory;
-import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker;
-import com.opensymphony.xwork2.security.ExcludedPatternsChecker;
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationException;
@@ -37,6 +35,8 @@ import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.inject.ContainerBuilder;
 import com.opensymphony.xwork2.interceptor.ParametersInterceptor;
 import com.opensymphony.xwork2.mock.MockResult;
+import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker;
+import com.opensymphony.xwork2.security.ExcludedPatternsChecker;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
 import com.opensymphony.xwork2.validator.ValidationInterceptor;
 import org.apache.struts2.dispatcher.ServletDispatcherResult;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/TestResult.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/TestResult.java b/core/src/test/java/org/apache/struts2/TestResult.java
index a1c7774..5927f79 100644
--- a/core/src/test/java/org/apache/struts2/TestResult.java
+++ b/core/src/test/java/org/apache/struts2/TestResult.java
@@ -21,17 +21,16 @@
 
 package org.apache.struts2;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Assert;
-
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import junit.framework.Assert;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
@@ -43,7 +42,7 @@ public class TestResult implements Result {
     private static final long serialVersionUID = -4429258122011663164L;
 
 
-    private static final Logger LOG = LoggerFactory.getLogger(TestResult.class);
+    private static final Logger LOG = LogManager.getLogger(TestResult.class);
 
 
     private List expectedValues = new ArrayList();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
index de8a0bd..106ba5f 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.views.jsp;
 
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.views.jsp.ui.AbstractUITag;
@@ -38,7 +38,7 @@ import java.util.*;
  */
 public abstract class AbstractUITagTest extends AbstractTagTest {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractUITagTest.class);
+    private static final Logger LOG = LogManager.getLogger(AbstractUITagTest.class);
 
     static final String FREEMARKER_ERROR_EXPECTATION = "Java backtrace for programmers:";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
----------------------------------------------------------------------
diff --git a/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java b/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
index 13ae6be..08a5ffa 100644
--- a/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
+++ b/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
@@ -21,8 +21,8 @@ package org.apache.struts2.cdi;
 
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.BeanManager;
@@ -46,7 +46,7 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 public class CdiObjectFactory extends ObjectFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CdiObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(CdiObjectFactory.class);
 
     /**
      * The key under which the BeanManager can be found according to CDI API docs

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowConfigAction.java
----------------------------------------------------------------------
diff --git a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowConfigAction.java b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowConfigAction.java
index faecb86..9fd0cb1 100644
--- a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowConfigAction.java
+++ b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowConfigAction.java
@@ -25,8 +25,8 @@ package org.apache.struts2.config_browser;
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import org.apache.commons.lang3.StringEscapeUtils;
 
@@ -47,7 +47,7 @@ public class ShowConfigAction extends ActionNamesAction {
     private Set<String> actionNames;
     private String detailView = "results";
     private PropertyDescriptor[] properties;
-    private static Logger LOG = LoggerFactory.getLogger(ShowConfigAction.class);
+    private static Logger LOG = LogManager.getLogger(ShowConfigAction.class);
     
     private ObjectFactory objectFactory;
     private ReflectionProvider reflectionProvider;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
----------------------------------------------------------------------
diff --git a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
index 3453b90..90ea243 100644
--- a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
+++ b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.config_browser;
 
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextFactory;
 import com.opensymphony.xwork2.util.reflection.ReflectionException;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
@@ -45,7 +45,7 @@ import java.util.TreeSet;
 public class ShowValidatorAction extends ListValidatorsAction {
     private static final long serialVersionUID = 4061534149317835177L;
 
-    private static Logger LOG = LoggerFactory.getLogger(ShowValidatorAction.class);
+    private static Logger LOG = LogManager.getLogger(ShowValidatorAction.class);
 
     private Set<PropertyInfo> properties = Collections.emptySet();
     private int selected = 0;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
index ed70858..429d25b 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
@@ -38,8 +38,8 @@ import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import javax.servlet.ServletContext;
 import java.net.MalformedURLException;
@@ -67,7 +67,7 @@ import java.util.Map;
  */
 public class ConventionUnknownHandler implements UnknownHandler {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ConventionUnknownHandler.class);
+    private static final Logger LOG = LogManager.getLogger(ConventionUnknownHandler.class);
 
     protected Configuration configuration;
     protected ObjectFactory objectFactory;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
index da7ad20..a678544 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.AnnotationUtils;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.convention.annotation.Action;
 import org.apache.struts2.convention.annotation.InterceptorRef;
 import org.apache.struts2.convention.annotation.InterceptorRefs;
@@ -43,8 +43,8 @@ import java.util.Map;
  * </p>
  */
 public class DefaultInterceptorMapBuilder implements InterceptorMapBuilder {
-	private static final Logger LOG = LoggerFactory
-			.getLogger(DefaultInterceptorMapBuilder.class);
+
+	private static final Logger LOG = LogManager.getLogger(DefaultInterceptorMapBuilder.class);
 
 	private Configuration configuration;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
index a9f44bd..0847bc7 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
@@ -32,8 +32,8 @@ import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
 import com.opensymphony.xwork2.util.finder.ResourceFinder;
 import com.opensymphony.xwork2.util.finder.Test;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.convention.annotation.Result;
@@ -117,7 +117,7 @@ import java.util.Set;
  * </table>
  */
 public class DefaultResultMapBuilder implements ResultMapBuilder {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultResultMapBuilder.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultResultMapBuilder.class);
     private final ServletContext servletContext;
     private Set<String> relativeResultTypes;
     private ConventionsService conventionsService;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
index d1ad0c0..ee6516f 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
@@ -44,8 +44,8 @@ import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
 import com.opensymphony.xwork2.util.finder.Test;
 import com.opensymphony.xwork2.util.finder.UrlSet;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
@@ -81,7 +81,7 @@ import java.util.regex.Pattern;
  */
 public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PackageBasedActionConfigBuilder.class);
+    private static final Logger LOG = LogManager.getLogger(PackageBasedActionConfigBuilder.class);
     private static final boolean EXTRACT_BASE_INTERFACES = true;
 
     private final Configuration configuration;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
index d9c90af..84420d7 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
@@ -21,8 +21,8 @@
 package org.apache.struts2.convention;
 
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 
 /**
@@ -34,7 +34,7 @@ import org.apache.commons.lang3.StringUtils;
  * </p>
  */
 public class SEOActionNameBuilder implements ActionNameBuilder {
-    private static final Logger LOG = LoggerFactory.getLogger(SEOActionNameBuilder.class);
+    private static final Logger LOG = LogManager.getLogger(SEOActionNameBuilder.class);
     private String actionSuffix = "Action";
     private boolean lowerCase;
     private String separator;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java
----------------------------------------------------------------------
diff --git a/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java b/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java
index 9d6f750..3375cf6 100644
--- a/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java
+++ b/plugins/dwr/src/main/java/org/apache/struts2/validators/DWRValidator.java
@@ -42,8 +42,8 @@ import com.opensymphony.xwork2.DefaultActionInvocation;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.ValidationAwareSupport;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <p/>
@@ -64,7 +64,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class DWRValidator {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DWRValidator.class);
+    private static final Logger LOG = LogManager.getLogger(DWRValidator.class);
 
     public ValidationAwareSupport doPost(String namespace, String actionName, Map params) throws Exception {
         HttpServletRequest req = WebContextFactory.get().getHttpServletRequest();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
----------------------------------------------------------------------
diff --git a/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java b/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
index d738500..127d173 100644
--- a/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
+++ b/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
 import com.opensymphony.xwork2.util.finder.UrlSet;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -70,7 +70,7 @@ import java.util.regex.Pattern;
  * directories.
  */
 public class JSPLoader {
-    private static final Logger LOG = LoggerFactory.getLogger(JSPLoader.class);
+    private static final Logger LOG = LogManager.getLogger(JSPLoader.class);
 
     private static MemoryClassLoader classLoader = new MemoryClassLoader();
     private static final String DEFAULT_PACKAGE = "org.apache.struts2.jsp";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
----------------------------------------------------------------------
diff --git a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
index 8c0c901..f5794f8 100644
--- a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
+++ b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
@@ -23,8 +23,8 @@ package org.apache.struts2.views.jasperreports;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRExporter;
 import net.sf.jasperreports.engine.JRExporterParameter;
@@ -135,7 +135,7 @@ public class JasperReportsResult extends StrutsResultSupport implements JasperRe
 
     private static final long serialVersionUID = -2523174799621182907L;
 
-    private final static Logger LOG = LoggerFactory.getLogger(JasperReportsResult.class);
+    private final static Logger LOG = LogManager.getLogger(JasperReportsResult.class);
 
     protected String dataSource;
     protected String format;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
----------------------------------------------------------------------
diff --git a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
index 6ca1a4a..7fc8e16 100644
--- a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
+++ b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.views.jasperreports;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRField;
 import net.sf.jasperreports.engine.JRRewindableDataSource;
@@ -39,7 +39,7 @@ public class ValueStackDataSource implements JRRewindableDataSource {
     /**
      * Logger for this class
      */
-    private static Logger LOG = LoggerFactory.getLogger(ValueStackDataSource.class);
+    private static Logger LOG = LogManager.getLogger(ValueStackDataSource.class);
 
     private Iterator iterator;
     private ValueStack valueStack;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
----------------------------------------------------------------------
diff --git a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
index 2d49e18..6bd3035 100644
--- a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
+++ b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
@@ -22,8 +22,8 @@ import com.opensymphony.xwork2.XWorkException;
 import com.opensymphony.xwork2.util.finder.ClassFinder;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
 import com.opensymphony.xwork2.util.finder.Test;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
@@ -60,7 +60,7 @@ import java.util.jar.JarInputStream;
  */
 public class Java8ClassFinder implements ClassFinder {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Java8ClassFinder.class);
+    private static final Logger LOG = LogManager.getLogger(Java8ClassFinder.class);
 
     private final Map<String, List<Info>> annotated = new HashMap<String, List<Info>>();
     private final Map<String, ClassInfo> classInfos = new LinkedHashMap<String, ClassInfo>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinderFactory.java
----------------------------------------------------------------------
diff --git a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinderFactory.java b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinderFactory.java
index 3ab5f9e..1d3feab 100644
--- a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinderFactory.java
+++ b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinderFactory.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.util.finder.ClassFinder;
 import com.opensymphony.xwork2.util.finder.ClassFinderFactory;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
 import com.opensymphony.xwork2.util.finder.Test;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.net.URL;
 import java.util.Collection;
@@ -28,7 +28,7 @@ import java.util.Set;
 
 public class Java8ClassFinderFactory implements ClassFinderFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Java8ClassFinderFactory.class);
+    private static final Logger LOG = LogManager.getLogger(Java8ClassFinderFactory.class);
 
     public Java8ClassFinderFactory() {
         try {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
index 7e932aa..b31b9be 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
@@ -20,14 +20,14 @@
  */
 package org.apache.struts2.views.java;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Default implementation of TagHandlerFactory 
  */
 public class DefaultTagHandlerFactory implements TagHandlerFactory {
-   private static final Logger LOG = LoggerFactory.getLogger(DefaultTagHandlerFactory.class);
+   private static final Logger LOG = LogManager.getLogger(DefaultTagHandlerFactory.class);
           
     private Class tagHandlerClass;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
index 8a9db25..1e3076a 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
@@ -29,14 +29,14 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Default implementation of the theme
  */
 public class DefaultTheme implements Theme {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultTheme.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultTheme.class);
 
     private String name;
     protected Map<String, List<TagHandlerFactory>> handlerFactories;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
index f3dd5a1..26a7ea3 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
@@ -24,8 +24,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.components.template.BaseTemplateEngine;
 import org.apache.struts2.components.template.Template;
@@ -42,7 +42,7 @@ import java.util.StringTokenizer;
  */
 public class JavaTemplateEngine extends BaseTemplateEngine {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JavaTemplateEngine.class);
+    private static final Logger LOG = LogManager.getLogger(JavaTemplateEngine.class);
 
     // The struts template engine manager
     protected TemplateEngineManager templateEngineManager;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
----------------------------------------------------------------------
diff --git a/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java b/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
index 26cea0f..76c2936 100644
--- a/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
+++ b/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
@@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher;
 
 import org.apache.struts2.ServletActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.jfree.chart.ChartUtilities;
 import org.jfree.chart.JFreeChart;
 
@@ -102,7 +102,7 @@ import javax.servlet.http.HttpServletResponse;
  */
 public class ChartResult extends StrutsResultSupport {
 
-    private final static Logger LOG = LoggerFactory.getLogger(ChartResult.class);
+    private final static Logger LOG = LogManager.getLogger(ChartResult.class);
 
     private static final long serialVersionUID = -6484761870055986612L;
     private static final String DEFAULT_TYPE = "png";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
index bb87c2f..8a8d0a7 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
@@ -32,8 +32,8 @@ import java.util.regex.Matcher;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.WildcardUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <p>Isolate the process of cleaning JSON data from the Interceptor class
@@ -47,7 +47,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public abstract class JSONCleaner {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONCleaner.class);
+    private static final Logger LOG = LogManager.getLogger(JSONCleaner.class);
 
     public static class Filter
     {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
index f802af9..227d66a 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
@@ -48,15 +48,15 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.WildcardUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Populates an action from a JSON string
  */
 public class JSONInterceptor extends AbstractInterceptor {
     private static final long serialVersionUID = 4950170304212158803L;
-    private static final Logger LOG = LoggerFactory.getLogger(JSONInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(JSONInterceptor.class);
     private boolean enableSMD = false;
     private boolean enableGZIP = false;
     private boolean wrapWithComments;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
index 6d03bdc..a0b1f8b 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
@@ -48,8 +48,8 @@ import java.util.Set;
 
 import org.apache.struts2.json.annotations.JSON;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Isolate the process of populating JSON objects from the Interceptor class
@@ -57,7 +57,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class JSONPopulator {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONPopulator.class);
+    private static final Logger LOG = LogManager.getLogger(JSONPopulator.class);
 
     private String dateFormat = JSONUtil.RFC3339_FORMAT;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
index 59f28fd..32025a8 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.WildcardUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.json.smd.SMDGenerator;
@@ -63,7 +63,7 @@ public class JSONResult implements Result {
 
     private static final long serialVersionUID = 8624350183189931165L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONResult.class);
+    private static final Logger LOG = LogManager.getLogger(JSONResult.class);
 
     /**
      * This result type doesn't have a default param, null is ok to reduce noise in logs

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
index f8f86dd..993de80 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
@@ -22,8 +22,8 @@ package org.apache.struts2.json;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.WildcardUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.json.annotations.SMDMethod;
 
@@ -42,7 +42,7 @@ public class JSONUtil {
 
     public final static String RFC3339_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONUtil.class);
+    private static final Logger LOG = LogManager.getLogger(JSONUtil.class);
 
     /**
      * Serializes an object into JSON.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
index 8194205..d94adc1 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONValidationInterceptor.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ModelDriven;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.struts2.ServletActionContext;
 
@@ -70,7 +70,7 @@ import java.util.Map;
  */
 public class JSONValidationInterceptor extends MethodFilterInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONValidationInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(JSONValidationInterceptor.class);
 
     private static final String VALIDATE_ONLY_PARAM = "struts.validateOnly";
     private static final String VALIDATE_JSON_PARAM = "struts.enableJSONValidation";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
index dc53967..39529d2 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.json;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.json.annotations.JSON;
 import org.apache.struts2.json.annotations.JSONFieldBridge;
 import org.apache.struts2.json.annotations.JSONParameter;
@@ -51,7 +51,7 @@ import java.util.regex.Pattern;
  */
 public class JSONWriter {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JSONWriter.class);
+    private static final Logger LOG = LogManager.getLogger(JSONWriter.class);
 
     /**
      * By default, enums are serialised as name=value pairs

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/rpc/RPCError.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/rpc/RPCError.java b/plugins/json/src/main/java/org/apache/struts2/json/rpc/RPCError.java
index c9a66ce..528fc70 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/rpc/RPCError.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/rpc/RPCError.java
@@ -23,14 +23,14 @@ package org.apache.struts2.json.rpc;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /*
  * Used to serialize RPC Errors
  */
 public class RPCError {
-    private static final Logger LOG = LoggerFactory.getLogger(RPCError.class);
+    private static final Logger LOG = LogManager.getLogger(RPCError.class);
 
     private int code;
     private String name;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java b/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
index d4479b9..decf22b 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
@@ -2,8 +2,8 @@ package org.apache.struts2.json.smd;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.json.JSONUtil;
 import org.apache.struts2.json.annotations.SMD;
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
 
 public class SMDGenerator {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SMDGenerator.class);
+    private static final Logger LOG = LogManager.getLogger(SMDGenerator.class);
 
     // rootObject is based on OGNL expression (action by default)
     private Object rootObject;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java b/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
index 7bf18b7..46d2e99 100644
--- a/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
+++ b/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
@@ -30,6 +30,7 @@ import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.interceptor.annotations.After;
 import com.opensymphony.xwork2.interceptor.annotations.Before;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.dispatcher.Dispatcher;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java
----------------------------------------------------------------------
diff --git a/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java b/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java
index de6f477..add0df0 100644
--- a/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java
+++ b/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java
@@ -27,6 +27,7 @@ import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.XWorkTestCase;
 import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/junit/src/test/java/actions/ViewAction.java
----------------------------------------------------------------------
diff --git a/plugins/junit/src/test/java/actions/ViewAction.java b/plugins/junit/src/test/java/actions/ViewAction.java
index 4c1141b..a90da9e 100644
--- a/plugins/junit/src/test/java/actions/ViewAction.java
+++ b/plugins/junit/src/test/java/actions/ViewAction.java
@@ -21,8 +21,6 @@
 package actions;
 
 import com.opensymphony.xwork2.ActionSupport;
-import org.apache.struts2.convention.annotation.Action;
-import org.apache.struts2.convention.annotation.Result;
 
 /**
  * Example action, which is called by the convention plugin test case

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
index 3282ba5..ceddb91 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundleFreemarkerManager.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.osgi;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import freemarker.cache.ClassTemplateLoader;
 import freemarker.cache.FileTemplateLoader;
 import freemarker.cache.MultiTemplateLoader;
@@ -43,7 +43,7 @@ import java.net.URI;
  */
 public class BundleFreemarkerManager extends FreemarkerManager {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BundleFreemarkerManager.class);
+    private static final Logger LOG = LogManager.getLogger(BundleFreemarkerManager.class);
 
     protected TemplateLoader createTemplateLoader(ServletContext servletContext, String templatePath) {
         TemplateLoader templatePathLoader = null;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java
index 1a01414..7e3add7 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/BundlePackageLoader.java
@@ -28,8 +28,8 @@ import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
 import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
@@ -46,7 +46,7 @@ import java.util.Map;
  */
 public class BundlePackageLoader implements PackageLoader {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BundlePackageLoader.class);
+    private static final Logger LOG = LogManager.getLogger(BundlePackageLoader.class);
 
     public List<PackageConfig> loadPackages(Bundle bundle, BundleContext bundleContext, ObjectFactory objectFactory,
                                             FileManagerFactory fileManagerFactory, Map<String, PackageConfig> pkgConfigs) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
index 91c4363..199f183 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.osgi.host.OsgiHost;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -50,7 +50,7 @@ import java.util.Set;
 public class DefaultBundleAccessor implements BundleAccessor {
 
     private static DefaultBundleAccessor self;
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultBundleAccessor.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultBundleAccessor.class);
 
     private BundleContext bundleContext;
     private Map<String, String> packageToBundle = new HashMap<String, String>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
index 5e400ed..63620cb 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
@@ -30,8 +30,8 @@ import com.opensymphony.xwork2.config.PackageProvider;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.osgi.host.OsgiHost;
 import org.apache.struts2.osgi.loaders.VelocityBundleResourceLoader;
@@ -53,7 +53,7 @@ import java.util.Set;
  */
 public class OsgiConfigurationProvider implements PackageProvider, BundleListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OsgiConfigurationProvider.class);
+    private static final Logger LOG = LogManager.getLogger(OsgiConfigurationProvider.class);
 
     private Configuration configuration;
     private ObjectFactory objectFactory;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
index e1df192..b5eaf6f 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.osgi;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.osgi.framework.Bundle;
 
 import java.lang.reflect.Method;
@@ -31,7 +31,7 @@ import java.net.URL;
 
 public class OsgiUtil {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OsgiUtil.class);
+    private static final Logger LOG = LogManager.getLogger(OsgiUtil.class);
 
     /**
      * A bundle is a jar, and a bunble URL will be useless to clients, this method translates

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
index 31b980f..b379538 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
@@ -1,7 +1,7 @@
 package org.apache.struts2.osgi;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.osgi.host.OsgiHost;
 
@@ -17,7 +17,7 @@ public class StrutsOsgiListener implements ServletContextListener {
     public static final String OSGI_HOST = "__struts_osgi_host";
     public static final String PLATFORM_KEY = "struts.osgi.host";
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsOsgiListener.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsOsgiListener.class);
 
     private OsgiHost osgiHost;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
index 0670a21..0225616 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
@@ -23,8 +23,8 @@ package org.apache.struts2.osgi.host;
 import com.opensymphony.xwork2.FileManager;
 import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.util.finder.ResourceFinder;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang.StringUtils;
 import org.apache.felix.main.AutoProcessor;
 import org.apache.felix.shell.ShellService;
@@ -58,7 +58,7 @@ import java.util.regex.Pattern;
  */
 public abstract class BaseOsgiHost implements OsgiHost {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BaseOsgiHost.class);
+    private static final Logger LOG = LogManager.getLogger(BaseOsgiHost.class);
 
     protected static final Pattern versionPattern = Pattern.compile("([\\d])+[\\.-]");
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
index 77d2614..f1393ea 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.osgi.host;
 
 import com.opensymphony.xwork2.config.ConfigurationException;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import org.apache.felix.framework.Felix;
 import org.apache.felix.framework.util.FelixConstants;
@@ -51,7 +51,7 @@ import java.util.Properties;
  */
 public class FelixOsgiHost extends BaseOsgiHost {
 
-    private static final Logger LOG = LoggerFactory.getLogger(FelixOsgiHost.class);
+    private static final Logger LOG = LogManager.getLogger(FelixOsgiHost.class);
 
     protected Felix felix;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
index 1a50091..9744fb0 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.osgi.host;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.felix.shell.ShellService;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -43,7 +43,7 @@ import java.util.Map;
  */
 public class GlassfishOSGiHost extends BaseOsgiHost implements OsgiHost {
 
-    private static final Logger LOG = LoggerFactory.getLogger(GlassfishOSGiHost.class);
+    private static final Logger LOG = LogManager.getLogger(GlassfishOSGiHost.class);
 
     /**
      * Location inside the WAR where initial bundles are located.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/osgi/src/main/java/org/apache/struts2/osgi/interceptor/OsgiInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/interceptor/OsgiInterceptor.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/interceptor/OsgiInterceptor.java
index 4f6eed5..53a58eb 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/interceptor/OsgiInterceptor.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/interceptor/OsgiInterceptor.java
@@ -23,8 +23,8 @@ package org.apache.struts2.osgi.interceptor;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.osgi.host.OsgiHost;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -41,7 +41,7 @@ import java.util.List;
  */
 public class OsgiInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OsgiInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(OsgiInterceptor.class);
 
     private BundleContext bundleContext;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
----------------------------------------------------------------------
diff --git a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
index 8c35fe0..b748fce 100644
--- a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
+++ b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
@@ -4,8 +4,8 @@ import com.opensymphony.xwork2.FileManager;
 import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import net.sf.oval.configuration.Configurer;
 import net.sf.oval.configuration.annotation.AnnotationsConfigurer;
 import net.sf.oval.configuration.annotation.JPAAnnotationsConfigurer;
@@ -22,7 +22,7 @@ import java.util.TreeSet;
 
 
 public class DefaultOValValidationManager implements OValValidationManager {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultOValValidationManager.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultOValValidationManager.class);
 
     protected static final String VALIDATION_CONFIG_SUFFIX = "-validation.xml";
     protected final Map<String, List<Configurer>> validatorCache = new HashMap<String, List<Configurer>>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
index a09cec4..b4d5410 100644
--- a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
+++ b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
@@ -28,8 +28,8 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
 import com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.DelegatingValidatorContext;
 import com.opensymphony.xwork2.validator.ValidatorContext;
 import net.sf.oval.ConstraintViolation;
@@ -49,7 +49,7 @@ import java.util.List;
  This interceptor provides validation using the OVal validation framework
  */
 public class OValValidationInterceptor extends MethodFilterInterceptor {
-    private static final Logger LOG = LoggerFactory.getLogger(OValValidationInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(OValValidationInterceptor.class);
 
     protected final static String VALIDATE_PREFIX = "validate";
     protected final static String ALT_VALIDATE_PREFIX = "validateDo";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
index ed18a32..0e5402d 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
@@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher.multipart;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import http.utils.multipartrequest.ServletMultipartRequest;
 import org.apache.struts2.StrutsConstants;
 
@@ -45,7 +45,7 @@ import java.util.Locale;
  */
 public class PellMultiPartRequest implements MultiPartRequest {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PellMultiPartRequest.class);
+    private static final Logger LOG = LogManager.getLogger(PellMultiPartRequest.class);
     private ServletMultipartRequest multi;
 
     private String defaultEncoding;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusFilter.java
----------------------------------------------------------------------
diff --git a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusFilter.java b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusFilter.java
index 4d0fb13..8058dac 100644
--- a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusFilter.java
+++ b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusFilter.java
@@ -36,14 +36,14 @@ import javax.servlet.http.HttpSession;
 
 import org.codehaus.plexus.PlexusContainer;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Creates a plexus container for the application, session, and request
  */
 public class PlexusFilter implements Filter {
-    private static final Logger LOG = LoggerFactory.getLogger(PlexusObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(PlexusObjectFactory.class);
     private static final String CHILD_CONTAINER_NAME = "request";
 
     private static boolean loaded = false;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusLifecycleListener.java
----------------------------------------------------------------------
diff --git a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusLifecycleListener.java b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusLifecycleListener.java
index b38bbaa..f4ba972 100644
--- a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusLifecycleListener.java
+++ b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusLifecycleListener.java
@@ -33,14 +33,14 @@ import javax.servlet.http.HttpSessionListener;
 import org.codehaus.plexus.DefaultPlexusContainer;
 import org.codehaus.plexus.PlexusContainer;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Manages the Plexus lifecycle for the servlet and session contexts
  */
 public class PlexusLifecycleListener implements ServletContextListener, HttpSessionListener {
-    private static final Logger LOG = LoggerFactory.getLogger(PlexusObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(PlexusObjectFactory.class);
 
     private static boolean loaded = false;
     public static final String KEY = "struts.plexus.container";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusObjectFactory.java
----------------------------------------------------------------------
diff --git a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusObjectFactory.java b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusObjectFactory.java
index a0089e4..5033b99 100644
--- a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusObjectFactory.java
+++ b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusObjectFactory.java
@@ -30,8 +30,8 @@ import com.opensymphony.xwork2.config.entities.InterceptorConfig;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.Interceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import com.opensymphony.xwork2.validator.Validator;
 import org.codehaus.plexus.PlexusContainer;
@@ -71,7 +71,7 @@ import java.util.Map;
  */
 public class PlexusObjectFactory extends ObjectFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PlexusObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(PlexusObjectFactory.class);
 
     private static final String PLEXUS_COMPONENT_TYPE = "plexus.component.type";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusUtils.java
----------------------------------------------------------------------
diff --git a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusUtils.java b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusUtils.java
index c12f0ae..27575bd 100644
--- a/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusUtils.java
+++ b/plugins/plexus/src/main/java/org/apache/struts2/plexus/PlexusUtils.java
@@ -28,14 +28,14 @@ import java.io.InputStreamReader;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Utility methods for dealing with Plexus
  */
 public class PlexusUtils {
-    private static final Logger LOG = LoggerFactory.getLogger(PlexusObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(PlexusObjectFactory.class);
 
     /**
      * Configures the container with the configuration file

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java b/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
index 6291a9b..ad89df1 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
@@ -1,8 +1,8 @@
 package org.apache.struts2;
 
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.portlet.PortletConstants;
 import org.apache.struts2.portlet.PortletPhase;
 import org.springframework.mock.web.portlet.MockPortletContext;
@@ -20,7 +20,7 @@ import java.util.Map;
  */
 public abstract class StrutsPortletTestCase extends StrutsTestCase {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsPortletTestCase.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsPortletTestCase.class);
 
     protected MockPortletSession portletSession;
     protected MockPortletRequest portletRequest;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
index 99da301..d3a7612 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
@@ -174,7 +174,7 @@ import static org.apache.struts2.portlet.PortletConstants.RESPONSE;
  */
 public class Jsr168Dispatcher extends GenericPortlet implements StrutsStatics {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Jsr168Dispatcher.class);
+    private static final Logger LOG = LogManager.getLogger(Jsr168Dispatcher.class);
 
     protected String portletNamespace = null;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java
index 9a5c329..2e82f0b 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java
@@ -1,8 +1,8 @@
 package org.apache.struts2.portlet.dispatcher;
 
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.portlet.PortletPhase;
 import org.apache.struts2.portlet.servlet.PortletServletResponse;
 import org.apache.struts2.portlet.servlet.PortletServletResponseJSR286;
@@ -18,7 +18,7 @@ import java.io.IOException;
 
 public class Jsr286Dispatcher extends Jsr168Dispatcher {
 
-    private final static Logger LOG = LoggerFactory.getLogger(Jsr286Dispatcher.class);
+    private final static Logger LOG = LogManager.getLogger(Jsr286Dispatcher.class);
 
 
     @Override

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java
index cc2d23b..87fd279 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java
@@ -23,8 +23,8 @@ package org.apache.struts2.portlet.interceptor;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.interceptor.PrincipalAware;
 import org.apache.struts2.portlet.PortletConstants;
@@ -37,7 +37,7 @@ public class PortletAwareInterceptor extends AbstractInterceptor implements Stru
 
 	private static final long serialVersionUID = 2476509721059587700L;
 	
-	private static final Logger LOG = LoggerFactory.getLogger(PortletAwareInterceptor.class);
+	private static final Logger LOG = LogManager.getLogger(PortletAwareInterceptor.class);
 
 	/**
      * Sets action properties based on the interfaces an action implements. Things like application properties,

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java
index 536882c..48832a4 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java
@@ -24,8 +24,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.portlet.PortletConstants;
 import org.apache.struts2.portlet.PortletPhase;
@@ -39,7 +39,7 @@ import static org.apache.struts2.portlet.PortletConstants.*;
 
 public class PortletStateInterceptor extends AbstractInterceptor {
 
-	private final static Logger LOG = LoggerFactory.getLogger(PortletStateInterceptor.class);
+	private final static Logger LOG = LogManager.getLogger(PortletStateInterceptor.class);
 
 	private static final long serialVersionUID = 6138452063353911784L;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java
index ea86865..7fa2336 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java
@@ -22,8 +22,8 @@ package org.apache.struts2.portlet.result;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.StrutsResultSupport;
@@ -61,7 +61,7 @@ public class PortletResult extends StrutsResultSupport {
 	/**
 	 * Logger instance.
 	 */
-	private static final Logger LOG = LoggerFactory.getLogger(PortletResult.class);
+	private static final Logger LOG = LogManager.getLogger(PortletResult.class);
 
 	private String contentType = "text/html";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java
index 65e0291..2d43c27 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java
@@ -24,8 +24,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.dispatcher.StrutsResultSupport;
@@ -90,7 +90,7 @@ public class PortletVelocityResult extends StrutsResultSupport {
 
     private static final long serialVersionUID = -8241086555872212274L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(PortletVelocityResult.class);
+    private static final Logger LOG = LogManager.getLogger(PortletVelocityResult.class);
     
     private String defaultEncoding;
     private VelocityManager velocityManager;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java
index d9ccf92..6e9f0f5 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java
@@ -9,8 +9,8 @@ import javax.portlet.PortletResponse;
 import javax.portlet.ResourceResponse;
 import javax.servlet.ServletOutputStream;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * PortletServletResponseJSR286.
@@ -19,7 +19,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class PortletServletResponseJSR286 extends PortletServletResponse {
 
-  private static final Logger LOG = LoggerFactory.getLogger(PortletServletResponseJSR286.class);
+  private static final Logger LOG = LogManager.getLogger(PortletServletResponseJSR286.class);
   
     public PortletServletResponseJSR286( PortletResponse portletResponse ) {
         super(portletResponse);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
index 73a40d7..7e72287 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.portlet.util;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.portlet.context.PortletActionContext;
@@ -53,7 +53,7 @@ import static org.apache.struts2.portlet.PortletConstants.MODE_PARAM;
 public class PortletUrlHelper {
     public static final String ENCODING = "UTF-8";
 
-    private static final Logger LOG = LoggerFactory.getLogger(PortletUrlHelper.class);
+    private static final Logger LOG = LogManager.getLogger(PortletUrlHelper.class);
 
     protected static final String PORTLETMODE_NAME_EDIT = "edit";
     protected static final String PORTLETMODE_NAME_VIEW = "view";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java
----------------------------------------------------------------------
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java
index 5f98742..82e9699 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java
+++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java
@@ -7,8 +7,8 @@ import javax.portlet.BaseURL;
 import javax.portlet.PortletSecurityException;
 import java.util.Map;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * PortletUrlJSR286Helper.
@@ -17,7 +17,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class PortletUrlHelperJSR286 extends PortletUrlHelper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PortletUrlHelperJSR286.class);
+    private static final Logger LOG = LogManager.getLogger(PortletUrlHelperJSR286.class);
 
     protected String encodeUrl( StringBuffer sb, PortletRequest req ) {
         MimeResponse resp = (MimeResponse) PortletActionContext.getResponse();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
----------------------------------------------------------------------
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
index ed8c695..6574cbe 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
@@ -31,8 +31,8 @@ import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.HttpHeaderResult;
@@ -54,7 +54,7 @@ public class RestActionInvocation extends DefaultActionInvocation {
 
     private static final long serialVersionUID = 3485701178946428716L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(RestActionInvocation.class);
+    private static final Logger LOG = LogManager.getLogger(RestActionInvocation.class);
 
     private ContentTypeHandlerManager handlerSelector;
     private boolean logger;


[13/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Remove not necessary toString() call


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

Branch: refs/heads/master
Commit: 40fdd167dd1da04e9c7b9bc648c0d057a80b0458
Parents: 2627942
Author: Johannes Geppert <jo...@gmail.com>
Authored: Tue May 26 18:07:20 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Tue May 26 18:07:20 2015 +0200

----------------------------------------------------------------------
 .../xwork2/interceptor/PrefixMethodInvocationUtil.java             | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/40fdd167/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
index 28895a7..5a6e5a1 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
@@ -146,7 +146,7 @@ public class PrefixMethodInvocationUtil {
             }
             catch (NoSuchMethodException e) {
                 // hmm -- OK, try next prefix
-                LOG.debug("Cannot find method [{}] in action [{}]", prefixedMethodName, action.toString());
+                LOG.debug("Cannot find method [{}] in action [{}]", prefixedMethodName, action);
             }
         }
 		return null;


[10/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Use log4j2 in all provided apps


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

Branch: refs/heads/master
Commit: 88649ff82caf180c66afdd49d90b3e0cede09f12
Parents: 8e87711
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 21:42:08 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 21:42:08 2015 +0200

----------------------------------------------------------------------
 apps/blank/pom.xml                              | 12 +-----
 apps/blank/src/main/resources/log4j2.xml        |  4 +-
 apps/jboss-blank/pom.xml                        |  8 ++++
 apps/jboss-blank/src/main/resources/log4j2.xml  | 15 +++++++
 apps/mailreader/pom.xml                         | 31 ++++++--------
 .../src/main/resources/log4j.properties         | 36 ----------------
 apps/mailreader/src/main/resources/log4j2.xml   | 16 +++++++
 apps/portlet/pom.xml                            | 12 +++++-
 apps/portlet/src/main/resources/log4j.xml       | 15 -------
 apps/portlet/src/main/resources/log4j2.xml      | 15 +++++++
 apps/rest-showcase/pom.xml                      |  1 +
 apps/showcase/pom.xml                           | 44 ++++++++------------
 .../showcase/action/AbstractCRUDAction.java     |  5 ++-
 .../struts2/showcase/action/EmployeeAction.java |  5 ++-
 .../struts2/showcase/action/SkillAction.java    |  5 ++-
 .../showcase/application/TestDataProvider.java  |  5 ++-
 .../src/main/resources/log4j.properties         | 33 ---------------
 apps/showcase/src/main/resources/log4j2.xml     | 16 +++++++
 .../src/main/webapp/WEB-INF/decorators/main.jsp |  8 ++--
 apps/showcase/src/main/webapp/WEB-INF/web.xml   | 22 +---------
 20 files changed, 133 insertions(+), 175 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/blank/pom.xml
----------------------------------------------------------------------
diff --git a/apps/blank/pom.xml b/apps/blank/pom.xml
index f10b53c..cec84f6 100644
--- a/apps/blank/pom.xml
+++ b/apps/blank/pom.xml
@@ -47,11 +47,7 @@
             <scope>provided</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
+        <!-- Logging -->
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
@@ -78,12 +74,6 @@
                     <scanTargets>
                         <scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
                     </scanTargets>
-                    <systemProperties>
-                        <systemProperty>
-                            <name>xwork.loggerFactory</name>
-                            <value>com.opensymphony.xwork2.util.logging.log4j2.Log4j2LoggerFactory</value>
-                        </systemProperty>
-                    </systemProperties>
                 </configuration>
             </plugin>
         </plugins>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/blank/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/apps/blank/src/main/resources/log4j2.xml b/apps/blank/src/main/resources/log4j2.xml
index aee8b3b..092d5f6 100644
--- a/apps/blank/src/main/resources/log4j2.xml
+++ b/apps/blank/src/main/resources/log4j2.xml
@@ -6,8 +6,8 @@
         </Console>
     </Appenders>
     <Loggers>
-        <Logger name="com.opensymphony.xwork2" level="debug"/>
-        <Logger name="org.apache.struts2" level="debug"/>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
         <Root level="warn">
             <AppenderRef ref="STDOUT"/>
         </Root>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/jboss-blank/pom.xml
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/pom.xml b/apps/jboss-blank/pom.xml
index 0b395cc..07f0166 100644
--- a/apps/jboss-blank/pom.xml
+++ b/apps/jboss-blank/pom.xml
@@ -48,6 +48,14 @@
             <version>2.0</version>
             <scope>provided</scope>
         </dependency>
+
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>struts2-junit-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/jboss-blank/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/resources/log4j2.xml b/apps/jboss-blank/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..abe3dde
--- /dev/null
+++ b/apps/jboss-blank/src/main/resources/log4j2.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/mailreader/pom.xml
----------------------------------------------------------------------
diff --git a/apps/mailreader/pom.xml b/apps/mailreader/pom.xml
index 9e3e105..0965639 100644
--- a/apps/mailreader/pom.xml
+++ b/apps/mailreader/pom.xml
@@ -47,6 +47,18 @@
            <version>1.3.5</version>
         </dependency>
 
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-jcl</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -67,30 +79,13 @@
                 <configuration>
                     <stopKey>CTRL+C</stopKey>
                     <stopPort>8999</stopPort>
-                    <systemProperties>
-                        <systemProperty>
-                            <name>log4j.configuration</name>
-                            <value>file:${basedir}/src/main/resources/log4j.properties</value>
-                        </systemProperty>
-                        <systemProperty>
-                            <name>slf4j</name>
-                            <value>false</value>
-                        </systemProperty>
-                    </systemProperties>
-                    <scanIntervalSeconds>10</scanIntervalSeconds>
+                   <scanIntervalSeconds>10</scanIntervalSeconds>
                     <webAppSourceDirectory>${basedir}/src/main/webapp/</webAppSourceDirectory>
                     <webAppConfig>
                         <contextPath>/struts2-mailreader</contextPath>
                         <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor>
                     </webAppConfig>
                 </configuration>
-                <dependencies>
-                    <dependency>
-                        <groupId>log4j</groupId>
-                        <artifactId>log4j</artifactId>
-                        <version>1.2.17</version>
-                    </dependency>
-                </dependencies>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/mailreader/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/resources/log4j.properties b/apps/mailreader/src/main/resources/log4j.properties
deleted file mode 100644
index e350a2d..0000000
--- a/apps/mailreader/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Log4J Settings for log4j 1.2.x (via jakarta-commons-logging)
-#
-# The five logging levels used by Log are (in order):
-#
-#   1. DEBUG (the least serious)
-#   2. INFO
-#   3. WARN
-#   4. ERROR
-#   5. FATAL (the most serious)
-
-
-# Set root logger level to WARN and append to stdout
-log4j.rootLogger=INFO, stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-# Pattern to output the caller's file name and line number.
-log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
-
-# Print only messages of level ERROR or above in the package noModule.
-log4j.logger.noModule=FATAL
-
-# OpenSymphony Stuff
-log4j.logger.freemarker=INFO
-log4j.logger.com.opensymphony=INFO
-log4j.logger.com.opensymphony.xwork2.ognl=ERROR
-log4j.logger.org.apache.struts2=WARN
-log4j.logger.org.apache.struts2.components=WARN
-log4j.logger.org.apache.struts2.dispatcher=WARN
-log4j.logger.org.apache.struts2.convention=INFO
-
-# Spring Stuff
-log4j.logger.org.springframework=WARN
-

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/mailreader/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/resources/log4j2.xml b/apps/mailreader/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..913b299
--- /dev/null
+++ b/apps/mailreader/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Logger name="org.springframework" level="info"/>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/portlet/pom.xml
----------------------------------------------------------------------
diff --git a/apps/portlet/pom.xml b/apps/portlet/pom.xml
index fc7d199..a5a7adc 100644
--- a/apps/portlet/pom.xml
+++ b/apps/portlet/pom.xml
@@ -137,9 +137,17 @@
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections</artifactId>
         </dependency>
+
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
         </dependency>
 
         <dependency>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/portlet/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/apps/portlet/src/main/resources/log4j.xml b/apps/portlet/src/main/resources/log4j.xml
deleted file mode 100644
index c6803da..0000000
--- a/apps/portlet/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
-        </layout>
-    </appender>
-
-    <root>
-        <priority value="ERROR"/>
-        <appender-ref ref="CONSOLE"/>
-    </root>
-</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/portlet/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/apps/portlet/src/main/resources/log4j2.xml b/apps/portlet/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..092d5f6
--- /dev/null
+++ b/apps/portlet/src/main/resources/log4j2.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Root level="warn">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/rest-showcase/pom.xml
----------------------------------------------------------------------
diff --git a/apps/rest-showcase/pom.xml b/apps/rest-showcase/pom.xml
index 65f9130..b02923c 100644
--- a/apps/rest-showcase/pom.xml
+++ b/apps/rest-showcase/pom.xml
@@ -49,6 +49,7 @@
             <artifactId>struts2-config-browser-plugin</artifactId>
         </dependency>
 
+        <!-- Logging -->
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/pom.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/pom.xml b/apps/showcase/pom.xml
index 8d2beab..bf70001 100644
--- a/apps/showcase/pom.xml
+++ b/apps/showcase/pom.xml
@@ -92,6 +92,23 @@
             <scope>provided</scope>
         </dependency>
 
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-jcl</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
         <!-- Velocity -->
         <dependency>
             <groupId>org.apache.velocity</groupId>
@@ -112,24 +129,6 @@
             <artifactId>dwr</artifactId>
         </dependency>
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-             <artifactId>commons-logging</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.myfaces.core</groupId>
-            <artifactId>myfaces-impl</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.myfaces.core</groupId>
-            <artifactId>myfaces-api</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-        <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
         </dependency>
@@ -189,14 +188,7 @@
                         <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor>
                     </webAppConfig>
                 </configuration>
-                <dependencies>
-                    <dependency>
-                        <groupId>log4j</groupId>
-                        <artifactId>log4j</artifactId>
-                        <version>1.2.17</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
+             </plugin>
 
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/java/org/apache/struts2/showcase/action/AbstractCRUDAction.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/AbstractCRUDAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/AbstractCRUDAction.java
index e2db05c..42e51a5 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/AbstractCRUDAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/AbstractCRUDAction.java
@@ -21,7 +21,8 @@
 package org.apache.struts2.showcase.action;
 
 import com.opensymphony.xwork2.ActionSupport;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.showcase.dao.Dao;
 import org.apache.struts2.showcase.model.IdEntity;
 
@@ -34,7 +35,7 @@ import java.util.Collection;
 
 public abstract class AbstractCRUDAction extends ActionSupport {
 
-	private static final Logger log = Logger.getLogger(AbstractCRUDAction.class);
+	private static final Logger log = LogManager.getLogger(AbstractCRUDAction.class);
 
 	private Collection availableItems;
 	private String[] toDelete;

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/java/org/apache/struts2/showcase/action/EmployeeAction.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/EmployeeAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/EmployeeAction.java
index d0ebb32..2115970 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/EmployeeAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/EmployeeAction.java
@@ -21,7 +21,8 @@
 package org.apache.struts2.showcase.action;
 
 import com.opensymphony.xwork2.Preparable;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.showcase.application.TestDataProvider;
 import org.apache.struts2.showcase.dao.Dao;
 import org.apache.struts2.showcase.dao.EmployeeDao;
@@ -42,7 +43,7 @@ public class EmployeeAction extends AbstractCRUDAction implements Preparable {
 
 	private static final long serialVersionUID = 7047317819789938957L;
 
-	private static final Logger log = Logger.getLogger(EmployeeAction.class);
+	private static final Logger log = LogManager.getLogger(EmployeeAction.class);
 
 	@Autowired
 	private EmployeeDao employeeDao;

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/java/org/apache/struts2/showcase/action/SkillAction.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/SkillAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/SkillAction.java
index bbd1346..ebc1b0b 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/action/SkillAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/action/SkillAction.java
@@ -21,7 +21,8 @@
 package org.apache.struts2.showcase.action;
 
 import com.opensymphony.xwork2.Preparable;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.showcase.dao.Dao;
 import org.apache.struts2.showcase.dao.SkillDao;
 import org.apache.struts2.showcase.model.Skill;
@@ -33,7 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 public class SkillAction extends AbstractCRUDAction implements Preparable {
 
-	private static final Logger log = Logger.getLogger(SkillAction.class);
+	private static final Logger log = LogManager.getLogger(SkillAction.class);
 
 	@Autowired
 	private SkillDao skillDao;

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java
index c45e718..6e60ebf 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java
@@ -20,7 +20,8 @@
  */
 package org.apache.struts2.showcase.application;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.showcase.dao.EmployeeDao;
 import org.apache.struts2.showcase.dao.SkillDao;
 import org.apache.struts2.showcase.exception.StorageException;
@@ -41,7 +42,7 @@ import java.util.Date;
 public class TestDataProvider implements Serializable, InitializingBean {
 
 	private static final long serialVersionUID = 1L;
-	private static final Logger log = Logger.getLogger(TestDataProvider.class);
+	private static final Logger log = LogManager.getLogger(TestDataProvider.class);
 
 	public static final String[] POSITIONS = {
 			"Developer",

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/log4j.properties b/apps/showcase/src/main/resources/log4j.properties
deleted file mode 100644
index acb4e6e..0000000
--- a/apps/showcase/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Log4J Settings for log4j 1.2.x (via jakarta-commons-logging)
-#
-# The five logging levels used by Log are (in order):
-#
-#   1. DEBUG (the least serious)
-#   2. INFO
-#   3. WARN
-#   4. ERROR
-#   5. FATAL (the most serious)
-
-
-# Set root logger level to WARN and append to stdout
-log4j.rootLogger=INFO, stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-# Pattern to output the caller's file name and line number.
-log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
-
-# Print only messages of level ERROR or above in the package noModule.
-log4j.logger.noModule=INFO
-
-# OpenSymphony Stuff
-log4j.logger.freemarker=INFO
-log4j.logger.com.opensymphony=INFO
-log4j.logger.com.opensymphony.xwork2.ognl=INFO
-log4j.logger.org.apache.struts2=INFO
-
-# Spring Stuff
-log4j.logger.org.springframework=INFO
-

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/log4j2.xml b/apps/showcase/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..913b299
--- /dev/null
+++ b/apps/showcase/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Logger name="org.springframework" level="info"/>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
index 5d1747b..1479f18 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
@@ -82,10 +82,11 @@
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
             </a>
-            <s:a value="/showcase.jsp" cssClass="brand">Struts2 Showcase</s:a>
+            <s:url var="home" action="showcase" namespace="/" includeContext="false" />
+            <s:a value="%{home}" cssClass="brand">Struts2 Showcase</s:a>
             <div class="nav-collapse">
                 <ul class="nav">
-                    <li><s:a value="/showcase.jsp"><i class="icon-home"></i> Home</s:a></li>
+                    <li><s:a value="%{home}"><i class="icon-home"></i> Home</s:a></li>
                     <li class="dropdown">
                         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Configuration<b
                                 class="caret"></b></a>
@@ -94,7 +95,8 @@
                                      includeParams="none">Action Chaining</s:a></li>
                             <li><s:a action="index" namespace="/config-browser"
                                      includeParams="none">Config Browser</s:a></li>
-                            <li><s:a value="/conversion/index.jsp">Conversion</s:a></li>
+                            <s:url var="conversion" action="index" namespace="/conversion" includeContext="false" />
+                            <li><s:a value="%{conversion}">Conversion</s:a></li>
                             <li><s:a value="/person/index.html">Person Manager ( by Conventions )</s:a></li>
                         </ul>
                     </li>

http://git-wip-us.apache.org/repos/asf/struts/blob/88649ff8/apps/showcase/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/web.xml b/apps/showcase/src/main/webapp/WEB-INF/web.xml
index f3b88e9..788c0b4 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/web.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/web.xml
@@ -40,12 +40,6 @@
     <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
-	
-    <listener>
-        <listener-class>
-          org.apache.myfaces.webapp.StartupServletContextListener
-        </listener-class>
-    </listener>
 
     <listener>
         <listener-class>
@@ -74,14 +68,7 @@
             <param-value>true</param-value>
         </init-param>
     </servlet>
-	
-	<!-- JavaServer Faces Servlet Configuration, not used directly -->
-  	<servlet>
-    	<servlet-name>faces</servlet-name>
-	    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-    	<load-on-startup>1</load-on-startup>
-  	</servlet>
-  		<servlet>
+	<servlet>
     	<servlet-name>JspSupportServlet</servlet-name>
     	<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
     	<load-on-startup>1</load-on-startup>
@@ -108,13 +95,6 @@
         <load-on-startup>1</load-on-startup>
     </servlet>
 
-
-  	<!-- JavaServer Faces Servlet Mapping, not called directly -->
-    <servlet-mapping>
-        <servlet-name>faces</servlet-name>
-        <url-pattern>*.action</url-pattern>
-  	</servlet-mapping>
-
     <servlet-mapping>
         <servlet-name>dwr</servlet-name>
         <url-pattern>/dwr/*</url-pattern>


[07/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
index 9599b95..eaae007 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
@@ -313,8 +313,7 @@ public class XWorkConverter extends DefaultTypeConverter {
             try {
                 return tc.convertValue(context, target, member, property, value, toClass);
             } catch (Exception e) {
-                if (LOG.isDebugEnabled())
-                    LOG.debug("unable to convert value using type converter [#0]", e, tc.getClass().getName());
+                LOG.debug("Unable to convert value using type converter [{}]", tc.getClass().getName(), e);
                 handleConversionException(context, property, value, target);
 
                 return TypeConverter.NO_CONVERSION_POSSIBLE;
@@ -323,24 +322,20 @@ public class XWorkConverter extends DefaultTypeConverter {
 
         if (defaultTypeConverter != null) {
             try {
-                if (LOG.isDebugEnabled())
-                    LOG.debug("falling back to default type converter [" + defaultTypeConverter + "]");
+                LOG.debug("Falling back to default type converter [{}]", defaultTypeConverter);
                 return defaultTypeConverter.convertValue(context, target, member, property, value, toClass);
             } catch (Exception e) {
-                if (LOG.isDebugEnabled())
-                    LOG.debug("unable to convert value using type converter [#0]", e, defaultTypeConverter.getClass().getName());
+                LOG.debug("Unable to convert value using type converter [{}]", defaultTypeConverter.getClass().getName(), e);
                 handleConversionException(context, property, value, target);
 
                 return TypeConverter.NO_CONVERSION_POSSIBLE;
             }
         } else {
             try {
-                if (LOG.isDebugEnabled())
-                    LOG.debug("falling back to Ognl's default type conversion");
+                LOG.debug("Falling back to Ognl's default type conversion");
                 return super.convertValue(value, toClass);
             } catch (Exception e) {
-                if (LOG.isDebugEnabled())
-                    LOG.debug("unable to convert value using type converter [#0]", e, super.getClass().getName());
+                LOG.debug("Unable to convert value using type converter [{}]", super.getClass().getName(), e);
                 handleConversionException(context, property, value, target);
 
                 return TypeConverter.NO_CONVERSION_POSSIBLE;
@@ -368,9 +363,7 @@ public class XWorkConverter extends DefaultTypeConverter {
             try {
                 clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
             } catch (ClassNotFoundException cnfe) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Cannot load class #0", cnfe, className);
-                }
+                LOG.debug("Cannot load class {}", className, cnfe);
             }
 
             result = lookupSuper(clazz);
@@ -408,9 +401,8 @@ public class XWorkConverter extends DefaultTypeConverter {
     }
 
     protected Object getConverter(Class clazz, String property) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Retrieving convert for class [#0] and property [#1]", clazz, property);
-        }
+        LOG.debug("Retrieving convert for class [{}] and property [{}]", clazz, property);
+
         synchronized (clazz) {
             if ((property != null) && !converterHolder.containsNoMapping(clazz)) {
                 try {
@@ -423,17 +415,15 @@ public class XWorkConverter extends DefaultTypeConverter {
                     }
 
                     Object converter = mapping.get(property);
-                    if (LOG.isDebugEnabled() && converter == null) {
-                        LOG.debug("Converter is null for property [#0]. Mapping size [#1]:", property, mapping.size());
+                    if (converter == null && LOG.isDebugEnabled()) {
+                        LOG.debug("Converter is null for property [{}]. Mapping size [{}]:", property, mapping.size());
                         for (String next : mapping.keySet()) {
-                            LOG.debug(next + ":" + mapping.get(next));
+                            LOG.debug("{}:{}", next, mapping.get(next));
                         }
                     }
                     return converter;
                 } catch (Throwable t) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Got exception trying to resolve convert for class [#0] and property [#1]", t, clazz, property);
-                    }
+                    LOG.debug("Got exception trying to resolve convert for class [{}] and property [{}]", clazz, property, t);
                     converterHolder.addNoMapping(clazz);
                 }
             }
@@ -499,9 +489,9 @@ public class XWorkConverter extends DefaultTypeConverter {
                     }
                     if (LOG.isDebugEnabled()) {
                         if (StringUtils.isEmpty(tc.key())) {
-                            LOG.debug("WARNING! key of @TypeConversion [#0] applied to [#1] is empty!", tc.converter(), clazz.getName());
+                            LOG.debug("WARNING! key of @TypeConversion [{}] applied to [{}] is empty!", tc.converter(), clazz.getName());
                         } else {
-                            LOG.debug("TypeConversion [#0] with key: [#1]", tc.converter(), tc.key());
+                            LOG.debug("TypeConversion [{}] with key: [{}]", tc.converter(), tc.key());
                         }
                     }
                     annotationProcessor.process(mapping, tc, tc.key());
@@ -522,9 +512,7 @@ public class XWorkConverter extends DefaultTypeConverter {
                     // Default to the property name
                     if (StringUtils.isEmpty(key)) {
                         key = AnnotationUtils.resolvePropertyName(method);
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("Retrieved key [#0] from method name [#1]", key, method.getName());
-                        }
+                        LOG.debug("Retrieved key [{}] from method name [{}]", key, method.getName());
                     }
                     annotationProcessor.process(mapping, tc, key);
                 }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
index 73596c8..e35222e 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
@@ -23,9 +23,7 @@ public class DefaultConverterFactory implements ConverterFactory {
     }
 
     public TypeConverter buildConverter(Class<? extends TypeConverter> converterClass, Map<String, Object> extraContext) throws Exception {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Creating converter of type [#0]", converterClass.getCanonicalName());
-        }
+        LOG.debug("Creating converter of type [{}]", converterClass.getCanonicalName());
         return container.getInstance(converterClass);
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
index 4d13f40..a2ac59c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
@@ -151,9 +151,7 @@ public class DefaultWorkflowInterceptor extends MethodFilterInterceptor {
             ValidationAware validationAwareAction = (ValidationAware) action;
 
             if (validationAwareAction.hasErrors()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Errors on action [#0], returning result name [#1]", validationAwareAction, inputResultName);
-                }
+                LOG.debug("Errors on action [{}], returning result name [{}]", validationAwareAction, inputResultName);
 
                 String resultName = inputResultName;
                 resultName = processValidationWorkflowAware(action, resultName);
@@ -174,10 +172,8 @@ public class DefaultWorkflowInterceptor extends MethodFilterInterceptor {
         String resultName = currentResultName;
         if (action instanceof ValidationWorkflowAware) {
             resultName = ((ValidationWorkflowAware) action).getInputResultName();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Changing result name from [#0] to [#1] because of processing [#2] interface applied to [#3]",
+            LOG.debug("Changing result name from [{}] to [{}] because of processing [{}] interface applied to [{}]",
                         currentResultName, resultName, InputConfig.class.getSimpleName(), ValidationWorkflowAware.class.getSimpleName(), action);
-            }
         }
         return resultName;
     }
@@ -195,10 +191,8 @@ public class DefaultWorkflowInterceptor extends MethodFilterInterceptor {
             } else {
                 resultName = annotation.resultName();
             }
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Changing result name from [#0] to [#1] because of processing annotation [#2] on action [#3]",
+            LOG.debug("Changing result name from [{}] to [{}] because of processing annotation [{}] on action [{}]",
                         currentResultName, resultName, InputConfig.class.getSimpleName(), action);
-            }
         }
         return resultName;
     }
@@ -210,10 +204,8 @@ public class DefaultWorkflowInterceptor extends MethodFilterInterceptor {
         String resultName = currentResultName;
         if (action instanceof ValidationErrorAware) {
             resultName = ((ValidationErrorAware) action).actionErrorOccurred(currentResultName);
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Changing result name from [#0] to [#1] because of processing interface [#2] on action [#3]",
+            LOG.debug("Changing result name from [{}] to [{}] because of processing interface [{}] on action [{}]",
                         currentResultName, resultName, ValidationErrorAware.class.getSimpleName(), action);
-            }
         }
         return resultName;
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
index 1d52c9c..99aadef 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
@@ -123,7 +123,7 @@ public class I18nInterceptor extends AbstractInterceptor {
     @Override
     public String intercept(ActionInvocation invocation) throws Exception {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("intercept '#0/#1' {",
+            LOG.debug("Intercept '{}/{}' {",
                 invocation.getProxy().getNamespace(), invocation.getProxy().getActionName());
         }
 
@@ -133,13 +133,13 @@ public class I18nInterceptor extends AbstractInterceptor {
         saveLocale(invocation, locale);
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("before Locale=#0", invocation.getStack().findValue("locale"));
+            LOG.debug("before Locale: {}", invocation.getStack().findValue("locale"));
         }
 
         final String result = invocation.invoke();
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("after Locale=#0", invocation.getStack().findValue("locale"));
+            LOG.debug("after Locale {}", invocation.getStack().findValue("locale"));
             LOG.debug("intercept } ");
         }
 
@@ -222,8 +222,8 @@ public class I18nInterceptor extends AbstractInterceptor {
             locale = (requestedLocale instanceof Locale) ?
                     (Locale) requestedLocale :
                     LocalizedTextUtil.localeFromString(requestedLocale.toString(), null);
-            if (locale != null && LOG.isDebugEnabled()) {
-                LOG.debug("applied request locale=#0", locale);
+            if (locale != null) {
+                LOG.debug("Applied request locale: {}", locale);
             }
         }
         return locale;
@@ -252,9 +252,7 @@ public class I18nInterceptor extends AbstractInterceptor {
         Object sessionLocale = session.get(attributeName);
         if (sessionLocale != null && sessionLocale instanceof Locale) {
             Locale locale = (Locale) sessionLocale;
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("applied session locale=#0", locale);
-            }
+            LOG.debug("Applied session locale: {}", locale);
             return locale;
         }
         return null;
@@ -263,8 +261,8 @@ public class I18nInterceptor extends AbstractInterceptor {
     protected Locale readStoredLocalFromCurrentInvocation(ActionInvocation invocation) {
         // no overriding locale definition found, stay with current invocation (=browser) locale
         Locale locale = invocation.getInvocationContext().getLocale();
-        if (locale != null && LOG.isDebugEnabled()) {
-            LOG.debug("applied invocation context locale=#0", locale);
+        if (locale != null) {
+            LOG.debug("Applied invocation context locale: {}", locale);
         }
         return locale;
     }
@@ -275,9 +273,7 @@ public class I18nInterceptor extends AbstractInterceptor {
                 && ((Object[]) requestedLocale).length > 0) {
             requestedLocale = ((Object[]) requestedLocale)[0];
 
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("requested_locale=#0", requestedLocale);
-            }
+            LOG.debug("Requested locale: {}", requestedLocale);
         }
         return requestedLocale;
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
index d2074ac..78d873d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
@@ -412,7 +412,7 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
     protected boolean acceptableName(String name) {
         boolean accepted = isWithinLengthLimit(name) && !isExcluded(name) && isAccepted(name);
         if (devMode && accepted) { // notify only when in devMode
-            LOG.debug("Parameter [#0] was accepted and will be appended to action!", name);
+            LOG.debug("Parameter [{}] was accepted and will be appended to action!", name);
         }
         return accepted;
     }
@@ -420,7 +420,7 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
 	protected boolean isWithinLengthLimit( String name ) {
         boolean matchLength = name.length() <= paramNameMaxLength;
         if (!matchLength) {
-            notifyDeveloper("Parameter [#0] is too long, allowed length is [#1]", name, String.valueOf(paramNameMaxLength));
+            notifyDeveloper("Parameter [{}] is too long, allowed length is [{}]", name, String.valueOf(paramNameMaxLength));
         }
         return matchLength;
 	}
@@ -430,14 +430,14 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
         if (result.isAccepted()) {
             return true;
         }
-        notifyDeveloper("Parameter [#0] didn't match accepted pattern [#1]!", paramName, result.getAcceptedPattern());
+        notifyDeveloper("Parameter [{}] didn't match accepted pattern [{}]!", paramName, result.getAcceptedPattern());
         return false;
     }
 
     protected boolean isExcluded(String paramName) {
         ExcludedPatternsChecker.IsExcluded result = excludedPatterns.isExcluded(paramName);
         if (result.isExcluded()) {
-            notifyDeveloper("Parameter [#0] matches excluded pattern [#1]!", paramName, result.getExcludedPattern());
+            notifyDeveloper("Parameter [{}] matches excluded pattern [{}]!", paramName, result.getExcludedPattern());
             return true;
         }
         return false;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
index aa1540b..28895a7 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
@@ -146,9 +146,7 @@ public class PrefixMethodInvocationUtil {
             }
             catch (NoSuchMethodException e) {
                 // hmm -- OK, try next prefix
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("cannot find method [#0] in action [#1]", prefixedMethodName, action.toString());
-                }
+                LOG.debug("Cannot find method [{}] in action [{}]", prefixedMethodName, action.toString());
             }
         }
 		return null;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
index 0f1c048..f4cc3fe 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
@@ -199,9 +199,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS
                     .build();
             throw new XWorkException(message, re);
         } else {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Error setting value [#0] with expression [#1]", re, value.toString(), expr);
-            }
+            LOG.warn("Error setting value [{}] with expression [{}]", value, expr, re);
         }
     }
 
@@ -333,7 +331,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS
         Object ret = findInContext(expr);
         if (ret == null) {
             if (shouldLogMissingPropertyWarning(e)) {
-                LOG.warn("Could not find property [#0]!", e, expr);
+                LOG.warn("Could not find property [{}]!", expr, e);
             }
             if (throwExceptionOnFailure) {
                 throw new XWorkException(e);
@@ -381,12 +379,11 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS
      * @param e    The thrown exception.
      */
     private void logLookupFailure(String expr, Exception e) {
-        String msg = LoggerUtils.format("Caught an exception while evaluating expression '#0' against value stack", expr);
         if (devMode && LOG.isWarnEnabled()) {
-            LOG.warn(msg, e);
+            LOG.warn("Caught an exception while evaluating expression '{}' against value stack", expr, e);
             LOG.warn("NOTE: Previous warning message was issued due to devMode set to true.");
-        } else if (LOG.isDebugEnabled()) {
-            LOG.debug(msg, e);
+        } else {
+            LOG.debug("Caught an exception while evaluating expression '{}' against value stack", expr, e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
index 040077d..075237b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
@@ -53,9 +53,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess {
     @Override
     public boolean isAccessible(Map context, Object target, Member member, String propertyName) {
         if (checkEnumAccess(target, member)) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Allowing access to enum #0", target);
-            }
+            LOG.trace("Allowing access to enum {}", target);
             return true;
         }
 
@@ -63,40 +61,30 @@ public class SecurityMemberAccess extends DefaultMemberAccess {
         Class memberClass = member.getDeclaringClass();
 
         if (Modifier.isStatic(member.getModifiers()) && allowStaticMethodAccess) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Support for accessing static methods [target: #0, member: #1, property: #2] is deprecated!", target, member, propertyName);
-            }
+            LOG.debug("Support for accessing static methods [target: {}, member: {}, property: {}] is deprecated!", target, member, propertyName);
             if (!isClassExcluded(member.getDeclaringClass())) {
                 targetClass = member.getDeclaringClass();
             }
         }
 
         if (isPackageExcluded(targetClass.getPackage(), memberClass.getPackage())) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Package of target [#0] or package of member [#1] are excluded!", target, member);
-            }
+            LOG.warn("Package of target [{}] or package of member [{}] are excluded!", target, member);
             return false;
         }
 
         if (isClassExcluded(targetClass)) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Target class [#0] is excluded!", target);
-            }
+            LOG.warn("Target class [{}] is excluded!", target);
             return false;
         }
 
         if (isClassExcluded(memberClass)) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Declaring class of member type [#0] is excluded!", member);
-            }
+            LOG.warn("Declaring class of member type [{}] is excluded!", member);
             return false;
         }
 
         boolean allow = true;
         if (!checkStaticMethodAccess(member)) {
-            if (LOG.isTraceEnabled()) {
-                LOG.warn("Access to static [#0] is blocked!", member);
-            }
+            LOG.warn("Access to static [{}] is blocked!", member);
             allow = false;
         }
 
@@ -128,7 +116,7 @@ public class SecurityMemberAccess extends DefaultMemberAccess {
     }
 
     protected boolean isPackageExcluded(Package targetPackage, Package memberPackage) {
-        if (LOG.isWarnEnabled() && (targetPackage == null || memberPackage == null)) {
+        if (targetPackage == null || memberPackage == null) {
             LOG.warn("The use of the default (unnamed) package is discouraged!");
         }
         

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
index bad1fc0..d02e84b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
@@ -210,13 +210,9 @@ public class CompoundRootAccessor implements PropertyAccessor, MethodAccessor, C
 
                 return sb.toString();
             } catch (IntrospectionException e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Got exception in callMethod", e);
-                }
+                LOG.debug("Got exception in callMethod", e);
             } catch (OgnlException e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Got exception in callMethod", e);
-                }
+                LOG.debug("Got exception in callMethod", e);
             }
 
             return null;
@@ -281,9 +277,7 @@ public class CompoundRootAccessor implements PropertyAccessor, MethodAccessor, C
                 }
             }
         } catch (Exception e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Got exception when tried to get class for name [#0]", e, className);
-            }
+            LOG.debug("Got exception when tried to get class for name [{}]", className, e);
         }
 
         return Thread.currentThread().getContextClassLoader().loadClass(className);

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
index 7d38122..55b6280 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
@@ -120,8 +120,7 @@ public class XWorkMethodAccessor extends ObjectMethodAccessor {
 			if (LOG.isDebugEnabled()) {
 				if (!(e.getReason() instanceof NoSuchMethodException)) {
 					// the method exists on the target object, but something went wrong
-					String s = "Error calling method through OGNL: object: [#0] method: [#1] args: [#2]";
-					LOG.debug(s, e.getReason(), object.toString(), methodName, Arrays.toString(objects));
+					LOG.debug( "Error calling method through OGNL: object: [{}] method: [{}] args: [{}]", e.getReason(), object.toString(), methodName, Arrays.toString(objects));
 				}
 			}
 			throw e;
@@ -149,8 +148,7 @@ public class XWorkMethodAccessor extends ObjectMethodAccessor {
 			if (LOG.isDebugEnabled()) {
 				if (!(e.getReason() instanceof NoSuchMethodException)) {
 					// the method exists on the target class, but something went wrong
-					String s = "Error calling method through OGNL, class: [#0] method: [#1] args: [#2]";
-					LOG.debug(s, e.getReason(), aClass.getName(), methodName, Arrays.toString(objects));
+					LOG.debug("Error calling method through OGNL, class: [{}] method: [{}] args: [{}]", e.getReason(), aClass.getName(), methodName, Arrays.toString(objects));
 				}
 			}
 			throw e;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
index 20eeff8..deb7c03 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
@@ -27,10 +27,8 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
 
     @Inject(value = XWorkConstants.OVERRIDE_ACCEPTED_PATTERNS, required = false)
     public void setOverrideAcceptedPatterns(String acceptablePatterns) {
-        if (LOG.isWarnEnabled()) {
-            LOG.warn("Overriding accepted patterns [#0] with [#1], be aware that this affects all instances and safety of your application!",
+        LOG.warn("Overriding accepted patterns [{}] with [{}], be aware that this affects all instances and safety of your application!",
                     XWorkConstants.OVERRIDE_ACCEPTED_PATTERNS, acceptablePatterns);
-        }
         acceptedPatterns = new HashSet<Pattern>();
         for (String pattern : TextParseUtil.commaDelimitedStringToSet(acceptablePatterns)) {
             acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
@@ -39,9 +37,7 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
 
     @Inject(value = XWorkConstants.ADDITIONAL_ACCEPTED_PATTERNS, required = false)
     public void setAdditionalAcceptedPatterns(String acceptablePatterns) {
-        if (LOG.isDebugEnabled()) {
-            LOG.warn("Adding additional global patterns [#0] to accepted patterns!", acceptablePatterns);
-        }
+        LOG.warn("Adding additional global patterns [{}] to accepted patterns!", acceptablePatterns);
         for (String pattern : TextParseUtil.commaDelimitedStringToSet(acceptablePatterns)) {
             acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
         }
@@ -56,9 +52,7 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
     }
 
     public void setAcceptedPatterns(Set<String> patterns) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Sets accepted patterns [#0]", patterns);
-        }
+        LOG.trace("Sets accepted patterns [{}]", patterns);
         acceptedPatterns = new HashSet<Pattern>(patterns.size());
         for (String pattern : patterns) {
             acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
@@ -68,9 +62,7 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
     public IsAccepted isAccepted(String value) {
         for (Pattern acceptedPattern : acceptedPatterns) {
             if (acceptedPattern.matcher(value).matches()) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("[#0] matches accepted pattern [#1]", value, acceptedPattern);
-                }
+                LOG.trace("[{}] matches accepted pattern [{}]", value, acceptedPattern);
                 return IsAccepted.yes(acceptedPattern.toString());
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
index 8ac60eb..1a2d2a1 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
@@ -28,10 +28,8 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker {
 
     @Inject(value = XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS, required = false)
     public void setOverrideExcludePatterns(String excludePatterns) {
-        if (LOG.isWarnEnabled()) {
-            LOG.warn("Overriding excluded patterns [#0] with [#1], be aware that this affects all instances and safety of your application!",
+        LOG.warn("Overriding excluded patterns [{}] with [{}], be aware that this affects all instances and safety of your application!",
                     XWorkConstants.OVERRIDE_EXCLUDED_PATTERNS, excludePatterns);
-        }
         excludedPatterns = new HashSet<Pattern>();
         for (String pattern : TextParseUtil.commaDelimitedStringToSet(excludePatterns)) {
             excludedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
@@ -40,9 +38,7 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker {
 
     @Inject(value = XWorkConstants.ADDITIONAL_EXCLUDED_PATTERNS, required = false)
     public void setAdditionalExcludePatterns(String excludePatterns) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Adding additional global patterns [#0] to excluded patterns!", excludePatterns);
-        }
+        LOG.debug("Adding additional global patterns [{}] to excluded patterns!", excludePatterns);
         for (String pattern : TextParseUtil.commaDelimitedStringToSet(excludePatterns)) {
             excludedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
         }
@@ -57,9 +53,7 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker {
     }
 
     public void setExcludedPatterns(Set<String> patterns) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Sets excluded patterns [#0]", patterns);
-        }
+        LOG.trace("Sets excluded patterns [{}]", patterns);
         excludedPatterns = new HashSet<Pattern>(patterns.size());
         for (String pattern : patterns) {
             excludedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
@@ -69,9 +63,7 @@ public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker {
     public IsExcluded isExcluded(String value) {
         for (Pattern excludedPattern : excludedPatterns) {
             if (excludedPattern.matcher(value).matches()) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("[#0] matches excluded pattern [#1]", value, excludedPattern);
-                }
+                LOG.trace("[{}] matches excluded pattern [{}]", value, excludedPattern);
                 return IsExcluded.yes(excludedPattern);
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
index 6e77ecf..3855749 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
@@ -80,16 +80,8 @@ public class DomHelper {
             try {
                 Class clazz = ObjectFactory.getObjectFactory().getClassInstance(parserProp);
                 factory = (SAXParserFactory) clazz.newInstance();
-            }
-            catch (ClassNotFoundException e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to load saxParserFactory set by system property 'xwork.saxParserFactory': #0", e, parserProp);
-                }
-            }
-            catch (Exception e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to load saxParserFactory set by system property 'xwork.saxParserFactory': #0", e, parserProp);
-                }
+            } catch (Exception e) {
+                LOG.error("Unable to load saxParserFactory set by system property 'xwork.saxParserFactory': {}", parserProp, e);
             }
         }
 
@@ -150,16 +142,8 @@ public class DomHelper {
                 try {
                     Class clazz = ObjectFactory.getObjectFactory().getClassInstance(parserProp);
                     FACTORY = (SAXTransformerFactory) clazz.newInstance();
-                }
-                catch (ClassNotFoundException e) {
-                    if (LOG.isErrorEnabled()) {
-                        LOG.error("Unable to load SAXTransformerFactory set by system property 'xwork.saxTransformerFactory': #0", e, parserProp);
-                    }
-                }
-                catch (Exception e) {
-                    if (LOG.isErrorEnabled()) {
-                        LOG.error("Unable to load SAXTransformerFactory set by system property 'xwork.saxTransformerFactory': #0", e, parserProp);
-                    }
+                } catch (Exception e) {
+                    LOG.error("Unable to load SAXTransformerFactory set by system property 'xwork.saxTransformerFactory': {}", parserProp, e);
                 }
             }
 
@@ -348,8 +332,8 @@ public class DomHelper {
             if (dtdMappings != null && dtdMappings.containsKey(publicId)) {
                 String dtdFile = dtdMappings.get(publicId);
                 return new InputSource(ClassLoaderUtil.getResourceAsStream(dtdFile, DomHelper.class));
-            } else if (LOG.isWarnEnabled()) {
-                LOG.warn("Local DTD is missing for publicID: #0 - defined mappings: #1", publicId, dtdMappings);
+            } else {
+                LOG.warn("Local DTD is missing for publicID: {} - defined mappings: {}", publicId, dtdMappings);
             }
             return null;
         }
@@ -367,8 +351,7 @@ public class DomHelper {
 
         @Override
         public void fatalError(SAXParseException exception) throws SAXException {
-            LOG.fatal(exception.getMessage() + " at (" + exception.getPublicId() + ":" + 
-                exception.getLineNumber() + ":" + exception.getColumnNumber() + ")", exception);
+            LOG.fatal("{} at ({}:{}:{})", exception.getMessage(), exception.getPublicId(), exception.getLineNumber(), exception.getColumnNumber(), exception);
             throw exception;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
index 943a956..1a46ecf 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
@@ -223,9 +223,9 @@ public class LocalizedTextUtil {
         }
 
         if (devMode) {
-            LOG.warn("Missing key [#0] in bundles [#1]!", aTextName, localList);
-        } else if (LOG.isDebugEnabled()) {
-            LOG.debug("Missing key [#0] in bundles [#1]!", aTextName, localList);
+            LOG.warn("Missing key [{}] in bundles [{}]!", aTextName, localList);
+        } else {
+            LOG.debug("Missing key [{}] in bundles [{}]!", aTextName, localList);
         }
 
         return null;
@@ -281,9 +281,7 @@ public class LocalizedTextUtil {
                         bundle = bundlesMap.get(key);
                     }
                 } catch (MissingResourceException e) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Missing resource bundle [#0]!", aBundleName);
-                    }
+                    LOG.debug("Missing resource bundle [{}]!", aBundleName, e);
                 }
             }
         }
@@ -643,15 +641,15 @@ public class LocalizedTextUtil {
             return formatWithNullDetection(mf, args);
         } catch (MissingResourceException ex) {
             if (devMode) {
-                LOG.warn("Missing key [#0] in bundle [#1]!", aTextName, bundle);
-            } else if (LOG.isDebugEnabled()) {
-                LOG.debug("Missing key [#0] in bundle [#1]!", aTextName, bundle);
+                LOG.warn("Missing key [{}] in bundle [{}]!", aTextName, bundle);
+            } else {
+                LOG.debug("Missing key [{}] in bundle [{}]!", aTextName, bundle);
             }
         }
 
         GetDefaultMessageReturnArg result = getDefaultMessage(aTextName, locale, valueStack, args, defaultMessage);
-        if (LOG.isWarnEnabled() && unableToFindTextForKey(result)) {
-            LOG.warn("Unable to find text for key '" + aTextName + "' in ResourceBundles for locale '" + locale + "'");
+        if (unableToFindTextForKey(result)) {
+            LOG.warn("Unable to find text for key '{}' in ResourceBundles for locale '{}'", aTextName, locale);
         }
         return result != null ? result.message : null;
     }
@@ -699,9 +697,9 @@ public class LocalizedTextUtil {
             return formatWithNullDetection(mf, args);
         } catch (MissingResourceException e) {
             if (devMode) {
-                LOG.warn("Missing key [#0] in bundle [#1]!", key, bundleName);
-            } else if (LOG.isDebugEnabled()) {
-                LOG.debug("Missing key [#0] in bundle [#1]!", key, bundleName);
+                LOG.warn("Missing key [{}] in bundle [{}]!", key, bundleName);
+            } else {
+                LOG.debug("Missing key [{}] in bundle [{}]!", key, bundleName);
             }
             return null;
         }
@@ -821,11 +819,10 @@ public class LocalizedTextUtil {
                     // now, for the true and utter hack, if we're running in tomcat, clear
                     // it's class loader resource cache as well.
                     clearTomcatCache();
-                    if(context!=null)
+                    if(context!=null) {
                         context.put(RELOADED, true);
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Resource bundles reloaded");
                     }
+                    LOG.debug("Resource bundles reloaded");
                 }
             } catch (Exception e) {
                 LOG.error("Could not reload resource bundles", e);
@@ -843,27 +840,19 @@ public class LocalizedTextUtil {
             if ("org.apache.catalina.loader.WebappClassLoader".equals(cl.getName())) {
                 clearMap(cl, loader, TOMCAT_RESOURCE_ENTRIES_FIELD);
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("class loader " + cl.getName() + " is not tomcat loader.");
-                }
+                LOG.debug("Class loader {} is not tomcat loader.", cl.getName());
             }
         } catch (NoSuchFieldException nsfe) {
             if ("org.apache.catalina.loader.WebappClassLoaderBase".equals(cl.getSuperclass().getName())) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Base class #0 doesn't contain '#1' field, trying with parent!", nsfe, cl.getName(), TOMCAT_RESOURCE_ENTRIES_FIELD);
-                }
+                LOG.debug("Base class {} doesn't contain '{}' field, trying with parent!", cl.getName(), TOMCAT_RESOURCE_ENTRIES_FIELD, nsfe);
                 try {
                     clearMap(cl.getSuperclass(), loader, TOMCAT_RESOURCE_ENTRIES_FIELD);
                 } catch (Exception e) {
-                    if (LOG.isWarnEnabled()) {
-                        LOG.warn("Couldn't clear tomcat cache using #0", e, cl.getSuperclass().getName());
-                    }
+                    LOG.warn("Couldn't clear tomcat cache using {}", cl.getSuperclass().getName(), e);
                 }
             }
         } catch (Exception e) {
-            if (LOG.isWarnEnabled()) {
-        	    LOG.warn("Couldn't clear tomcat cache", e, cl.getName());
-            }
+      	    LOG.warn("Couldn't clear tomcat cache", cl.getName(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
index db436f1..58ce870 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
@@ -35,9 +35,7 @@ public class URLUtil {
      */
     @Deprecated
     public static boolean verifyUrl(String url) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Checking if url [#0] is valid", url);
-        }
+        LOG.debug("Checking if url [{}] is valid", url);
         if (url == null) {
             return false;
         }
@@ -52,9 +50,7 @@ public class URLUtil {
 
             return true;
         } catch (MalformedURLException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Url [#0] is invalid: #1", e, url, e.getMessage());
-            }
+            LOG.debug("Url [{}] is invalid: {}", url, e.getMessage(), e);
             return false;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
index bab9368..3b2714e 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
@@ -46,8 +46,7 @@ public final class FileResourceStore implements ResourceStore {
 
             return data;
         } catch (Exception e) {
-            if (LOG.isDebugEnabled())
-                LOG.debug("Unable to read file [#0]", e, pResourceName);
+            LOG.debug("Unable to read file [{}]", pResourceName, e);
             return null;
         } finally {
             closeQuietly(fis);
@@ -63,8 +62,7 @@ public final class FileResourceStore implements ResourceStore {
             if (is != null)
                 is.close();
         } catch (IOException e) {
-            if (LOG.isErrorEnabled())
-                LOG.error("Unable to close file input stream", e);
+            LOG.error("Unable to close file input stream", e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
index 19c9524..f7528b0 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
@@ -51,8 +51,7 @@ public class JarResourceStore implements ResourceStore {
 
             return out.toByteArray();
         } catch (Exception e) {
-            if (LOG.isDebugEnabled())
-                LOG.debug("Unable to read file [#0] from [#1]", e, pResourceName, file.getName());
+            LOG.debug("Unable to read file [{}] from [{}]", pResourceName, file.getName(), e);
             return null;
         } finally {
             closeQuietly(in);
@@ -76,8 +75,7 @@ public class JarResourceStore implements ResourceStore {
             if (is != null)
                 is.close();
         } catch (IOException e) {
-            if (LOG.isErrorEnabled())
-                LOG.error("Unable to close input stream", e);
+            LOG.error("Unable to close input stream", e);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
index 7c46ee6..3d17ca4 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
@@ -66,10 +66,12 @@ public class ReloadingClassLoader extends ClassLoader {
         } catch (RuntimeException e) {
             // see WW-3121
             // TODO: Fix this for a reloading mechanism to be marked as stable
-            if (root != null)
-                LOG.error("Exception while trying to build the ResourceStore for URL [#0]", e, root.toString());
-            else
+            if (root != null) {
+                LOG.error("Exception while trying to build the ResourceStore for URL [{}]", root.toString(), e);
+            }
+            else {
                 LOG.error("Exception while trying to get root resource from class loader", e);
+            }
             LOG.error("Consider setting struts.convention.classes.reload=false");
             throw e;
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
index 44d4eb2..80f205a 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
@@ -85,8 +85,7 @@ public class DefaultClassFinder implements ClassFinder {
                     }
                 }
             } catch (Exception e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Unable to read URL [#0]", e, location.toExternalForm());
+                LOG.error("Unable to read URL [{}]", location.toExternalForm(), e);
             }
         }
 
@@ -95,8 +94,7 @@ public class DefaultClassFinder implements ClassFinder {
                 if (classNameFilter.test(className))
                     readClassDef(className);
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Unable to read class [#0]", e, className);
+                LOG.error("Unable to read class [{}]", className, e);
             }
         }
     }
@@ -189,8 +187,7 @@ public class DefaultClassFinder implements ClassFinder {
                         classes.add(clazz);
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -220,8 +217,7 @@ public class DefaultClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -251,8 +247,7 @@ public class DefaultClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -282,8 +277,7 @@ public class DefaultClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -302,8 +296,7 @@ public class DefaultClassFinder implements ClassFinder {
                     classes.add(classInfo.get());
                 }
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -319,8 +312,7 @@ public class DefaultClassFinder implements ClassFinder {
                     classes.add(classInfo.get());
                 }
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -334,8 +326,7 @@ public class DefaultClassFinder implements ClassFinder {
             try {
                 classes.add(classInfo.get());
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -352,8 +343,7 @@ public class DefaultClassFinder implements ClassFinder {
                     urls.add(url);
                 }
             } catch (IOException ioe) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Could not read driectory [#0]", ioe, dirName);
+                LOG.error("Could not read directory [{}]", dirName, ioe);
             }
         }
 
@@ -397,9 +387,9 @@ public class DefaultClassFinder implements ClassFinder {
             } finally {
                 in.close();
             }
-        } else if (LOG.isDebugEnabled())
-            LOG.debug("Unable to read [#0]", location.toExternalForm());
-        
+        } else {
+            LOG.debug("Unable to read [{}]", location.toExternalForm());
+        }
         return Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
index ffda507..8e8d2a6 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
@@ -836,9 +836,7 @@ public class ResourceFinder {
 
                 }
             } catch (Exception e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Got exception loading resources for #0", e, uri);
-                }
+                LOG.debug("Got exception loading resources for {}", uri, e);
             }
         }
 
@@ -871,9 +869,7 @@ public class ResourceFinder {
 
                 }
             } catch (Exception e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Got exception search for subpackages for #0", e, uri);
-                }
+                LOG.debug("Got exception search for subpackages for {}", uri, e);
             }
         }
 
@@ -906,9 +902,7 @@ public class ResourceFinder {
                     result.put(location, convertPathsToPackages(resources));
                 }
             } catch (Exception e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Got exception finding subpackages for #0", e, uri);
-                }
+                LOG.debug("Got exception finding subpackages for {}", uri, e);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
index c38d5d5..f5de6fd 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
@@ -237,9 +237,9 @@ public class UrlSet {
                 //build a URL pointing to the jar, instead of the META-INF dir
                 url = new URL(StringUtils.substringBefore(externalForm, "META-INF"));
                 list.add(url);
-            } else if (LOG.isDebugEnabled())
-                LOG.debug("Ignoring URL [#0] because it is not a jar", url.toExternalForm());
-
+            } else {
+                LOG.debug("Ignoring URL [{}] because it is not a jar", url.toExternalForm());
+            }
         }
 
         //usually the "classes" dir
@@ -264,17 +264,14 @@ public class UrlSet {
                 //build a URL pointing to the jar, instead of the META-INF dir
                 url = new URL(StringUtils.substringBefore(externalForm, "META-INF"));
                 list.add(url);
-            } else if (LOG.isDebugEnabled())
-                LOG.debug("Ignoring URL [#0] because it is not a valid protocol", url.toExternalForm());
-
+            } else {
+                LOG.debug("Ignoring URL [{}] because it is not a valid protocol", url.toExternalForm());
+            }
         }
         return list;
     }
 
     public static interface FileProtocolNormalizer {
-
         URL normalizeToFileProtocol(URL url);
-
     }
-
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
index b0c93d7..42d2a38 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
@@ -126,15 +126,11 @@ public class DefaultFileManager implements FileManager {
             } else if ("file".equals(url.getProtocol())) {
                 return url; // it's already a file
             } else {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("Could not normalize URL [#0] to file protocol!", url.toString());
-                }
+                LOG.warn("Could not normalize URL [{}] to file protocol!", url);
                 return null;
             }
         } catch (MalformedURLException e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Error normalizing URL [#0] to file protocol!", e, url.toString());
-            }
+            LOG.warn("Error normalizing URL [{}] to file protocol!", url, e);
             return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
index 741d297..7c872f3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
@@ -40,24 +40,18 @@ public class DefaultFileManagerFactory implements FileManagerFactory {
     public FileManager getFileManager() {
         FileManager fileManager = lookupFileManager();
         if (fileManager != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Using FileManager implementation [#0]", fileManager.getClass().getSimpleName());
-            }
+            LOG.debug("Using FileManager implementation [{}]", fileManager.getClass().getSimpleName());
             fileManager.setReloadingConfigs(reloadingConfigs);
             return fileManager;
         }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Using default implementation of FileManager provided under name [system]: #0", systemFileManager.getClass().getSimpleName());
-        }
+        LOG.debug("Using default implementation of FileManager provided under name [system]: {}", systemFileManager.getClass().getSimpleName());
         systemFileManager.setReloadingConfigs(reloadingConfigs);
         return systemFileManager;
     }
 
     private FileManager lookupFileManager() {
         Set<String> names = container.getInstanceNames(FileManager.class);
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Found following implementations of FileManager interface: #0", names.toString());
-        }
+        LOG.debug("Found following implementations of FileManager interface: {}", names);
         Set<FileManager> internals = new HashSet<FileManager>();
         Set<FileManager> users = new HashSet<FileManager>();
         for (String fmName : names) {
@@ -70,15 +64,11 @@ public class DefaultFileManagerFactory implements FileManagerFactory {
         }
         for (FileManager fm : users) {
             if (fm.support()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using FileManager implementation [#0]", fm.getClass().getSimpleName());
-                }
+                LOG.debug("Using FileManager implementation [{}]", fm.getClass().getSimpleName());
                 return fm;
             }
         }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("No user defined FileManager, looking up for internal implementations!");
-        }
+        LOG.debug("No user defined FileManager, looking up for internal implementations!");
         for (FileManager fm : internals) {
             if (fm.support()) {
                 return fm;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
index b2c9684..4b962af 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
@@ -35,11 +35,10 @@ public class JarEntryRevision extends Revision {
                 separatorIndex = fileName.lastIndexOf(JAR_FILE_EXTENSION_END);
             }
             if (separatorIndex == -1) {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("Could not find end of jar file!");
-                }
+                LOG.warn("Could not find end of jar file!");
                 return null;
             }
+
             // Split file name
             jarFileName = fileName.substring(0, separatorIndex);
             int index = separatorIndex + JAR_FILE_NAME_SEPARATOR.length();
@@ -54,9 +53,7 @@ public class JarEntryRevision extends Revision {
                 return null;
             }
         } catch (Throwable e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Could not create JarEntryRevision for [#0]!", e, jarFileName);
-            }
+            LOG.warn("Could not create JarEntryRevision for [{}]!", jarFileName, e);
             return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
index 3f98023..7c96ae3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
@@ -174,7 +174,7 @@ public class DefaultValidatorFactory implements ValidatorFactory {
                         }
                     }
                 } catch (Exception ex) {
-                    LOG.error("Unable to load #0", ex, u.toString());
+                    LOG.error("Unable to load {}", u, ex);
                 }
             }
         } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java
index 15a5858..d7f129b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java
@@ -70,13 +70,11 @@ public class ExpressionValidator extends ValidatorSupport {
         if ((obj != null) && (obj instanceof Boolean)) {
             answer = (Boolean) obj;
         } else {
-            log.warn("Got result of [#0] when trying to get Boolean.", obj);
+            log.warn("Got result of [{}] when trying to get Boolean.", obj);
         }
 
         if (!answer) {
-            if (log.isDebugEnabled()) {
-                log.debug("Validation failed on expression [#0] with validated object [#1]", expression, object);
-            }
+            log.debug("Validation failed on expression [{}] with validated object [{}]", expression, object);
             addActionError(object);
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
index 183ea65..39c0e86 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
@@ -76,9 +76,7 @@ public abstract class RangeValidatorSupport<T extends Comparable> extends FieldV
     }
 
     public void setMinExpression(String minExpression) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("${minExpression} was defined as [#0]", minExpression);
-        }
+        LOG.debug("${minExpression} was defined as [{}]", minExpression);
         this.minExpression = minExpression;
     }
 
@@ -97,9 +95,7 @@ public abstract class RangeValidatorSupport<T extends Comparable> extends FieldV
     }
 
     public void setMaxExpression(String maxExpression) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("${maxExpression} was defined as [#0]", maxExpression);
-        }
+        LOG.debug("${maxExpression} was defined as [{}]", maxExpression);
         this.maxExpression = maxExpression;
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
index 778c522..a107387 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
@@ -95,9 +95,8 @@ public class RegexFieldValidator extends FieldValidatorSupport {
         // if there is no value - don't do comparison
         // if a value is required, a required validator should be added to the field
         String regexToUse = getRegex();
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Defined regexp as [#0]", regexToUse);
-        }
+        LOG.debug("Defined regexp as [{}]", regexToUse);
+
         if (value == null || regexToUse == null) {
             return;
         }


[09/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Use log4j2 placeholder for logging messages and optimize logging a bit


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

Branch: refs/heads/master
Commit: 8e8771153af36b3ce111b5b2289bdab2c8bbd937
Parents: 95805e5
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 21:25:50 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 21:25:50 2015 +0200

----------------------------------------------------------------------
 .../java/org/apache/struts2/RequestUtils.java   |  6 +-
 .../org/apache/struts2/components/Date.java     |  6 +-
 .../org/apache/struts2/components/UIBean.java   |  4 +-
 .../components/template/BaseTemplateEngine.java |  2 +-
 .../config/AbstractBeanSelectionProvider.java   | 10 ++-
 .../config/DefaultBeanSelectionProvider.java    |  6 +-
 .../DefaultDispatcherErrorHandler.java          |  6 +-
 .../dispatcher/DefaultStaticContentLoader.java  |  2 +-
 .../apache/struts2/dispatcher/Dispatcher.java   | 14 ++--
 .../struts2/dispatcher/HttpHeaderResult.java    |  2 +-
 .../dispatcher/ServletRedirectResult.java       | 16 ++---
 .../struts2/dispatcher/VelocityResult.java      |  4 +-
 .../dispatcher/mapper/DefaultActionMapper.java  | 10 +--
 .../mapper/PrefixBasedActionMapper.java         | 28 ++++----
 .../multipart/JakartaMultiPartRequest.java      | 19 ++----
 .../JakartaStreamMultiPartRequest.java          | 20 +++---
 .../multipart/MultiPartRequestWrapper.java      |  2 +-
 .../impl/PrefixBasedActionProxyFactory.java     | 16 ++---
 .../interceptor/CheckboxInterceptor.java        |  4 +-
 .../struts2/interceptor/CookieInterceptor.java  | 20 +++---
 .../interceptor/CookieProviderInterceptor.java  | 10 +--
 .../struts2/interceptor/I18nInterceptor.java    |  6 +-
 .../struts2/interceptor/RolesInterceptor.java   |  2 +-
 .../org/apache/struts2/util/StrutsUtil.java     |  6 +-
 .../struts2/util/SubsetIteratorFilter.java      |  6 +-
 .../struts2/util/fs/JBossFileManager.java       | 28 +++-----
 .../views/freemarker/FreemarkerManager.java     |  4 +-
 .../struts2/views/freemarker/tags/TagModel.java |  4 +-
 .../struts2/views/util/DefaultUrlHelper.java    |  8 +--
 .../apache/struts2/views/xslt/BeanAdapter.java  |  9 +--
 .../apache/struts2/views/xslt/XSLTResult.java   |  4 +-
 .../convention/ConventionUnknownHandler.java    | 38 ++++-------
 .../DefaultInterceptorMapBuilder.java           |  2 +-
 .../convention/DefaultResultMapBuilder.java     | 31 ++++-----
 .../PackageBasedActionConfigBuilder.java        | 70 ++++++++------------
 .../convention/SEOActionNameBuilder.java        |  4 +-
 .../main/java/org/apache/struts2/JSPLoader.java | 14 ++--
 .../jasperreports/ValueStackDataSource.java     | 15 ++---
 .../struts2/convention/Java8ClassFinder.java    | 36 ++++------
 .../views/java/DefaultTagHandlerFactory.java    |  3 +-
 .../apache/struts2/views/java/DefaultTheme.java |  4 +-
 .../struts2/views/java/JavaTemplateEngine.java  | 24 ++-----
 .../org/apache/struts2/json/JSONWriter.java     |  4 +-
 .../struts2/osgi/DefaultBundleAccessor.java     |  3 +-
 .../struts2/osgi/OsgiConfigurationProvider.java | 16 ++---
 .../java/org/apache/struts2/osgi/OsgiUtil.java  |  6 +-
 .../apache/struts2/osgi/StrutsOsgiListener.java |  5 +-
 .../apache/struts2/osgi/host/BaseOsgiHost.java  | 44 +++++-------
 .../apache/struts2/osgi/host/FelixOsgiHost.java | 21 ++----
 .../struts2/osgi/host/GlassfishOSGiHost.java    |  9 +--
 .../DefaultOValValidationManager.java           |  6 +-
 .../interceptor/OValValidationInterceptor.java  | 22 ++----
 .../multipart/PellMultiPartRequest.java         |  4 +-
 .../ClassReloadingXMLWebApplicationContext.java | 14 ++--
 .../xwork2/DefaultActionInvocation.java         | 12 +---
 .../opensymphony/xwork2/DefaultActionProxy.java |  4 +-
 .../xwork2/config/ConfigurationManager.java     | 22 ++----
 .../config/providers/InterceptorBuilder.java    | 14 ++--
 .../providers/XmlConfigurationProvider.java     | 57 ++++------------
 .../DefaultConversionAnnotationProcessor.java   | 12 ++--
 .../impl/DefaultConversionFileProcessor.java    | 26 ++------
 .../DefaultConversionPropertiesProcessor.java   | 10 +--
 .../impl/DefaultObjectTypeDeterminer.java       |  4 +-
 .../xwork2/conversion/impl/XWorkConverter.java  | 42 +++++-------
 .../xwork2/factory/DefaultConverterFactory.java |  4 +-
 .../interceptor/DefaultWorkflowInterceptor.java | 16 ++---
 .../xwork2/interceptor/I18nInterceptor.java     | 22 +++---
 .../interceptor/ParametersInterceptor.java      |  8 +--
 .../interceptor/PrefixMethodInvocationUtil.java |  4 +-
 .../xwork2/ognl/OgnlValueStack.java             | 13 ++--
 .../xwork2/ognl/SecurityMemberAccess.java       | 26 ++------
 .../ognl/accessor/CompoundRootAccessor.java     | 12 +---
 .../ognl/accessor/XWorkMethodAccessor.java      |  6 +-
 .../DefaultAcceptedPatternsChecker.java         | 16 ++---
 .../DefaultExcludedPatternsChecker.java         | 16 ++---
 .../com/opensymphony/xwork2/util/DomHelper.java | 31 ++-------
 .../xwork2/util/LocalizedTextUtil.java          | 47 +++++--------
 .../com/opensymphony/xwork2/util/URLUtil.java   |  8 +--
 .../util/classloader/FileResourceStore.java     |  6 +-
 .../util/classloader/JarResourceStore.java      |  6 +-
 .../util/classloader/ReloadingClassLoader.java  |  8 ++-
 .../xwork2/util/finder/DefaultClassFinder.java  | 36 ++++------
 .../xwork2/util/finder/ResourceFinder.java      | 12 +---
 .../opensymphony/xwork2/util/finder/UrlSet.java | 15 ++---
 .../xwork2/util/fs/DefaultFileManager.java      |  8 +--
 .../util/fs/DefaultFileManagerFactory.java      | 20 ++----
 .../xwork2/util/fs/JarEntryRevision.java        |  9 +--
 .../validator/DefaultValidatorFactory.java      |  2 +-
 .../validators/ExpressionValidator.java         |  6 +-
 .../validators/RangeValidatorSupport.java       |  8 +--
 .../validators/RegexFieldValidator.java         |  5 +-
 91 files changed, 416 insertions(+), 836 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/RequestUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/RequestUtils.java b/core/src/main/java/org/apache/struts2/RequestUtils.java
index 0ba079d..a09f879 100644
--- a/core/src/main/java/org/apache/struts2/RequestUtils.java
+++ b/core/src/main/java/org/apache/struts2/RequestUtils.java
@@ -121,13 +121,11 @@ public class RequestUtils {
             try {
                 return fastDateFormat.parse(headerValue);
             } catch (ParseException ignore) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Error parsing value [#0] as [#1]!", headerValue, fastDateFormat);
-                }
+                LOG.debug("Error parsing value [{}] as [{}]!", headerValue, fastDateFormat);
             }
         }
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Error parsing value [#0] as date!", headerValue);
+            LOG.debug("Error parsing value [{}] as date!", headerValue);
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/components/Date.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Date.java b/core/src/main/java/org/apache/struts2/components/Date.java
index e086276..ac61fc7 100644
--- a/core/src/main/java/org/apache/struts2/components/Date.java
+++ b/core/src/main/java/org/apache/struts2/components/Date.java
@@ -287,15 +287,15 @@ public class Date extends ContextBean {
                 date = ((Calendar) dateObject).getTime();
             } else {
                 if (devMode) {
-                    LOG.error("Expression [#0] passed to <s:date/> tag which was evaluated to [#1](#2) isn't instance of java.util.Date nor java.util.Calendar!",
+                    LOG.error("Expression [{}] passed to <s:date/> tag which was evaluated to [{}]({}) isn't instance of java.util.Date nor java.util.Calendar!",
                             name, dateObject, (dateObject != null ? dateObject.getClass() : "null"));
                 } else {
-                    LOG.debug("Expression [#0] passed to <s:date/> tag which was evaluated to [#1](#2) isn't instance of java.util.Date nor java.util.Calendar!",
+                    LOG.debug("Expression [{}] passed to <s:date/> tag which was evaluated to [{}]({}) isn't instance of java.util.Date nor java.util.Calendar!",
                             name, dateObject, (dateObject != null ? dateObject.getClass() : "null"));
                 }
             }
         } catch (Exception e) {
-            LOG.error("Could not convert object with key '#0' to a java.util.Date instance", name);
+            LOG.error("Could not convert object with key '{}' to a java.util.Date instance", name);
         }
 
         //try to find the format on the stack

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/components/UIBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java b/core/src/main/java/org/apache/struts2/components/UIBean.java
index 8c9ebf6..4f015e9 100644
--- a/core/src/main/java/org/apache/struts2/components/UIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/UIBean.java
@@ -1006,9 +1006,7 @@ public abstract class UIBean extends Component {
             // this check is needed for backwards compatibility with 2.1.x
             tryId = findStringIfAltSyntax(id);
         } else if (null == (generatedId = escape(name != null ? findString(name) : null))) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Cannot determine id attribute for [#0], consider defining id, name or key attribute!", this);
-            }
+            LOG.debug("Cannot determine id attribute for [{}], consider defining id, name or key attribute!", this);
             tryId = null;
         } else if (form != null) {
             tryId = form.getParameters().get("id") + "_" + generatedId;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
index cf7414a..097d09c 100644
--- a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
+++ b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
@@ -93,7 +93,7 @@ public abstract class BaseTemplateEngine implements TemplateEngine {
         if (servletContext != null) {
             return servletContext.getResourceAsStream(path);
         } else {
-            LOG.warn("ServletContext is null, cannot obtain #0", path);
+            LOG.warn("ServletContext is null, cannot obtain {}", path);
             return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
index a75b877..0bc7f30 100644
--- a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
@@ -50,20 +50,20 @@ public abstract class AbstractBeanSelectionProvider implements BeanSelectionProv
             String foundName = props.getProperty(key, DEFAULT_BEAN_NAME);
             if (builder.contains(type, foundName)) {
                 if (LOG.isInfoEnabled()) {
-                    LOG.info("Choosing bean (#0) for (#1)", foundName, type.getName());
+                    LOG.info("Choosing bean ({}) for ({})", foundName, type.getName());
                 }
                 builder.alias(type, foundName, Container.DEFAULT_NAME);
             } else {
                 try {
                     Class cls = ClassLoaderUtil.loadClass(foundName, this.getClass());
                     if (LOG.isDebugEnabled()) {
-                        LOG.debug("Choosing bean (#0) for (#1)", cls.getName(), type.getName());
+                        LOG.debug("Choosing bean ({}) for ({})", cls.getName(), type.getName());
                     }
                     builder.factory(type, cls, scope);
                 } catch (ClassNotFoundException ex) {
                     // Perhaps a spring bean id, so we'll delegate to the object factory at runtime
                     if (LOG.isDebugEnabled()) {
-                        LOG.debug("Choosing bean (#0) for (#1) to be loaded from the ObjectFactory", foundName, type.getName());
+                        LOG.debug("Choosing bean ({}) for ({}) to be loaded from the ObjectFactory", foundName, type.getName());
                     }
                     if (DEFAULT_BEAN_NAME.equals(foundName)) {
                         // Probably an optional bean, will ignore
@@ -77,9 +77,7 @@ public abstract class AbstractBeanSelectionProvider implements BeanSelectionProv
                 }
             }
         } else {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Unable to alias bean type (#0), default mapping already assigned.", type.getName());
-            }
+            LOG.warn("Unable to alias bean type ({}), default mapping already assigned.", type.getName());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
index 671ea59..1f66d16 100644
--- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
@@ -466,12 +466,10 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider
             while (customBundles.hasMoreTokens()) {
                 String name = customBundles.nextToken();
                 try {
-                    if (LOG.isInfoEnabled()) {
-                	    LOG.info("Loading global messages from [#0]", name);
-                    }
+              	    LOG.info("Loading global messages from [{}]", name);
                     LocalizedTextUtil.addDefaultResourceBundle(name);
                 } catch (Exception e) {
-                    LOG.error("Could not find messages file #0.properties. Skipping", name);
+                    LOG.error("Could not find messages file {}.properties. Skipping", name);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
index 2b4061c..78ca2c8 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
@@ -66,7 +66,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler {
             if (code == HttpServletResponse.SC_INTERNAL_SERVER_ERROR) {
                 // WW-4103: Only logs error when application error occurred, not Struts error
                 if (LOG.isErrorEnabled()) {
-                    LOG.error("Exception occurred during processing request: #0", e, e.getMessage());
+                    LOG.error("Exception occurred during processing request: {}", e, e.getMessage());
                 }
                 // send a http error response to use the servlet defined error handler
                 // make the exception available to the web.xml defined error page
@@ -84,9 +84,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler {
     }
 
     protected void handleErrorInDevMode(HttpServletResponse response, int code, Exception e) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Exception occurred during processing request: #0", e, e.getMessage());
-        }
+        LOG.debug("Exception occurred during processing request: {}", e, e.getMessage());
         try {
             List<Throwable> chain = new ArrayList<Throwable>();
             Throwable cur = e;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
index d6004eb..4d27f49 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
@@ -214,7 +214,7 @@ public class DefaultStaticContentLoader implements StaticContentLoader {
                 ifModifiedSince = request.getDateHeader("If-Modified-Since");
             } catch (Exception e) {
                 if (LOG.isWarnEnabled()) {
-                    LOG.warn("Invalid If-Modified-Since header value: '#0', ignoring", request.getHeader("If-Modified-Since"));
+                    LOG.warn("Invalid If-Modified-Since header value: '{}', ignoring", request.getHeader("If-Modified-Since"));
                 }
             }
             long lastModifiedMillis = lastModifiedCal.getTimeInMillis();

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
index d01d6e7..707c051 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
@@ -288,7 +288,7 @@ public class Dispatcher {
             }
             catch(Exception e) {
                 // catch any exception that may occurred during destroy() and log it
-                LOG.error("exception occurred while destroying ObjectFactory [#0]", e, objectFactory.toString());
+                LOG.error("exception occurred while destroying ObjectFactory [{}]", e, objectFactory.toString());
             }
         }
 
@@ -333,9 +333,7 @@ public class Dispatcher {
         if (initParams.containsKey(StrutsConstants.STRUTS_FILE_MANAGER)) {
             final String fileManagerClassName = initParams.get(StrutsConstants.STRUTS_FILE_MANAGER);
             final Class<FileManager> fileManagerClass = (Class<FileManager>) Class.forName(fileManagerClassName);
-            if (LOG.isInfoEnabled()) {
-                LOG.info("Custom FileManager specified: #0", fileManagerClassName);
-            }
+            LOG.info("Custom FileManager specified: {}", fileManagerClassName);
             configurationManager.addContainerProvider(new FileManagerProvider(fileManagerClass, fileManagerClass.getSimpleName()));
         } else {
             // add any other Struts 2 provided implementations of FileManager
@@ -344,9 +342,7 @@ public class Dispatcher {
         if (initParams.containsKey(StrutsConstants.STRUTS_FILE_MANAGER_FACTORY)) {
             final String fileManagerFactoryClassName = initParams.get(StrutsConstants.STRUTS_FILE_MANAGER_FACTORY);
             final Class<FileManagerFactory> fileManagerFactoryClass = (Class<FileManagerFactory>) Class.forName(fileManagerFactoryClassName);
-            if (LOG.isInfoEnabled()) {
-                LOG.info("Custom FileManagerFactory specified: #0", fileManagerFactoryClassName);
-            }
+            LOG.info("Custom FileManagerFactory specified: {}", fileManagerFactoryClassName);
             configurationManager.addContainerProvider(new FileManagerFactoryProvider(fileManagerFactoryClass));
         }
     }
@@ -595,9 +591,9 @@ public class Dispatcher {
             uri = uri + "?" + request.getQueryString();
         }
         if (devMode) {
-            LOG.error("Could not find action or result\n#0", e, uri);
+            LOG.error("Could not find action or result\n{}", uri, e);
         } else if (LOG.isWarnEnabled()) {
-            LOG.warn("Could not find action or result: #0", e, uri);
+            LOG.warn("Could not find action or result: {}", uri, e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
index 1f07c42..d25772b 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
@@ -196,7 +196,7 @@ public class HttpHeaderResult implements Result {
                 errorCode = Integer.parseInt(parse ? TextParseUtil.translateVariables(error, stack) : error);
             } catch (Exception e) {
                 if (LOG.isErrorEnabled()) {
-                    LOG.error("Cannot parse errorCode [#0] value as Integer!", e, error);
+                    LOG.error("Cannot parse errorCode [{}] value as Integer!", error, e);
                 }
             }
             if (errorCode != -1) {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
index 2293c59..9476221 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
@@ -279,25 +279,17 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec
             URI uri = URI.create(rawUrl.replaceAll(" ", "%20"));
             if (uri.isAbsolute()) {
                 URL validUrl = uri.toURL();
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("[#0] is full url, not a path", url);
-                }
+                LOG.debug("[{}] is full url, not a path", url);
                 return validUrl.getProtocol() == null;
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("[#0] isn't absolute URI, assuming it's a path", url);
-                }
+                LOG.debug("[{}] isn't absolute URI, assuming it's a path", url);
                 return true;
             }
         } catch (IllegalArgumentException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("[#0] isn't a valid URL, assuming it's a path", e, url);
-            }
+            LOG.debug("[{}] isn't a valid URL, assuming it's a path", url, e);
             return true;
         } catch (MalformedURLException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("[#0] isn't a valid URL, assuming it's a path", e, url);
-            }
+            LOG.debug("[{}] isn't a valid URL, assuming it's a path", url, e);
             return true;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
index 2a00ad9..e16bb81 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
@@ -159,9 +159,7 @@ public class VelocityResult extends StrutsResultSupport {
             // to do it all the time (WW-829). Since Velocity support is being deprecated, we'll oblige :)
             writer.flush();
         } catch (Exception e) {
-            if (LOG.isErrorEnabled()) {
-                LOG.error("Unable to render Velocity Template, '#0'", e, finalLocation);
-            }
+            LOG.error("Unable to render Velocity Template, '{}'", finalLocation, e);
             throw e;
         } finally {
             if (usedJspFactory) {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
index 1370d0e..03c7ac5 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
@@ -384,17 +384,13 @@ public class DefaultActionMapper implements ActionMapper {
         if (allowedActionNames.matcher(rawActionName).matches()) {
             return rawActionName;
         } else {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Action [#0] does not match allowed action names pattern [#1], cleaning it up!",
-                        rawActionName, allowedActionNames);
-            }
+            LOG.warn("Action [{}] does not match allowed action names pattern [{}], cleaning it up!",
+                    rawActionName, allowedActionNames);
             String cleanActionName = rawActionName;
             for (String chunk : allowedActionNames.split(rawActionName)) {
                 cleanActionName = cleanActionName.replace(chunk, "");
             }
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Cleaned action name [#0]", cleanActionName);
-            }
+            LOG.debug("Cleaned action name [{}]", cleanActionName);
             return cleanActionName;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
index f43d802..b0adc3d 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
@@ -63,8 +63,8 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti
                     Object obj = container.getInstance(ActionMapper.class, mapperName);
                     if (obj != null) {
                         actionMappers.put(mapperPrefix, (ActionMapper) obj);
-                    } else if (LOG.isDebugEnabled()) {
-                        LOG.debug("invalid PrefixBasedActionMapper config entry: [#0]", mapper);
+                    } else {
+                        LOG.debug("invalid PrefixBasedActionMapper config entry: [{}]", mapper);
                     }
                 }
             }
@@ -79,30 +79,28 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti
             ActionMapper actionMapper = actionMappers.get(uri.substring(0, lastIndex));
             if (actionMapper != null) {
                 ActionMapping actionMapping = actionMapper.getMapping(request, configManager);
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using ActionMapper [#0]", actionMapper.toString());
-                }
+                LOG.debug("Using ActionMapper [{}]", actionMapper);
                 if (actionMapping != null) {
                     if (LOG.isDebugEnabled()) {
                         if (actionMapping.getParams() != null) {
-                            LOG.debug("ActionMapper found mapping. Parameters: [#0]", actionMapping.getParams().toString());
+                            LOG.debug("ActionMapper found mapping. Parameters: [{}]", actionMapping.getParams().toString());
                             for (Map.Entry<String, Object> mappingParameterEntry : actionMapping.getParams().entrySet()) {
                                 Object paramValue = mappingParameterEntry.getValue();
                                 if (paramValue == null) {
-                                    LOG.debug("[#0] : null!", mappingParameterEntry.getKey());
+                                    LOG.debug("[{}] : null!", mappingParameterEntry.getKey());
                                 } else if (paramValue instanceof String[]) {
-                                    LOG.debug("[#0] : (String[]) #1", mappingParameterEntry.getKey(), Arrays.toString((String[]) paramValue));
+                                    LOG.debug("[{}] : (String[]) {}", mappingParameterEntry.getKey(), Arrays.toString((String[]) paramValue));
                                 } else if (paramValue instanceof String) {
-                                    LOG.debug("[#0] : (String) [#1]", mappingParameterEntry.getKey(), paramValue.toString());
+                                    LOG.debug("[{}] : (String) [{}]", mappingParameterEntry.getKey(), paramValue.toString());
                                 } else {
-                                    LOG.debug("[#0] : (Object) [#1]", mappingParameterEntry.getKey(), paramValue.toString());
+                                    LOG.debug("[{}] : (Object) [{}]", mappingParameterEntry.getKey(), paramValue.toString());
                                 }
                             }
                         }
                     }
                     return actionMapping;
-                } else if (LOG.isDebugEnabled()) {
-                    LOG.debug("ActionMapper [#0] failed to return an ActionMapping", actionMapper.toString());
+                } else {
+                    LOG.debug("ActionMapper [{}] failed to return an ActionMapping", actionMapper);
                 }
             }
         }
@@ -118,13 +116,11 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti
             ActionMapper actionMapper = actionMappers.get(namespace.substring(0, lastIndex));
             if (actionMapper != null) {
                 String uri = actionMapper.getUriFromActionMapping(mapping);
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using ActionMapper [#0]", actionMapper.toString());
-                }
+                LOG.debug("Using ActionMapper [{}]", actionMapper);
                 if (uri != null) {
                     return uri;
                 } else if (LOG.isDebugEnabled()) {
-                    LOG.debug("ActionMapper [#0] failed to return an ActionMapping (null)", actionMapper.toString());
+                    LOG.debug("ActionMapper [{}] failed to return an ActionMapping (null)", actionMapper);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
index 5e1d19d..635b420 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
@@ -117,17 +117,13 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
 
     protected String buildErrorMessage(Throwable e, Object[] args) {
         String errorKey = "struts.messages.upload.error." + e.getClass().getSimpleName();
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Preparing error message for key: [#0]", errorKey);
-        }
+        LOG.debug("Preparing error message for key: [{}]", errorKey);
         return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args);
     }
 
     protected void processUpload(HttpServletRequest request, String saveDir) throws FileUploadException, UnsupportedEncodingException {
         for (FileItem item : parseRequest(request, saveDir)) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found item " + item.getFieldName());
-            }
+            LOG.debug("Found file item: [{}]", item.getFieldName());
             if (item.isFormField()) {
                 processNormalFormField(item, request.getCharacterEncoding());
             } else {
@@ -137,13 +133,11 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
     }
 
     protected void processFileField(FileItem item) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Item is a file upload");
-        }
+        LOG.debug("Item is a file upload");
 
         // Skip file uploads that don't have a file name - meaning that no file was selected.
         if (item.getName() == null || item.getName().trim().length() < 1) {
-            LOG.debug("No file has been uploaded for the field: " + item.getFieldName());
+            LOG.debug("No file has been uploaded for the field: {}", item.getFieldName());
             return;
         }
 
@@ -159,9 +153,8 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
     }
 
     protected void processNormalFormField(FileItem item, String charset) throws UnsupportedEncodingException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Item is a normal form field");
-        }
+        LOG.debug("Item is a normal form field");
+
         List<String> values;
         if (params.get(item.getFieldName()) != null) {
             values = params.get(item.getFieldName());

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
index e0c5294..12aad31 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
@@ -120,9 +120,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
         for (String fieldName : fileInfos.keySet()) {
             for (FileInfo fileInfo : fileInfos.get(fieldName)) {
                 File file = fileInfo.getFile();
-                LOG.debug("Deleting file '#0'.", file.getName());
+                LOG.debug("Deleting file '{}'.", file.getName());
                 if (!file.delete())
-                    LOG.warn("There was a problem attempting to delete file '#0'.", file.getName());
+                    LOG.warn("There was a problem attempting to delete file '{}'.", file.getName());
             }
         }
     }
@@ -306,7 +306,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
                         // also warn user in the logs.
                         if (!requestSizePermitted) {
                             addFileSkippedError(itemStream.getName(), request);
-                            LOG.warn("Skipped stream '#0', request maximum size (#1) exceeded.", itemStream.getName(), maxSize);
+                            LOG.warn("Skipped stream '{}', request maximum size ({}) exceeded.", itemStream.getName(), maxSize);
                             continue;
                         }
 
@@ -380,8 +380,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
             }
             values.add(fieldValue);
         } catch (IOException e) {
-            e.printStackTrace();
-            LOG.warn("Failed to handle form field '#0'.", fieldName);
+            LOG.warn("Failed to handle form field '{}'.", fieldName, e);
         }
     }
 
@@ -404,8 +403,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
                 try {
                     file.delete();
                 } catch (SecurityException se) {
-                    se.printStackTrace();
-                    LOG.warn("Failed to delete '#0' due to security exception above.", file.getName());
+                    LOG.warn("Failed to delete '{}' due to security exception above.", file.getName(), se);
                 }
             }
         }
@@ -434,7 +432,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
         }
 
         File file = File.createTempFile(prefix + "_", suffix, new File(location));
-        LOG.debug("Creating temporary file '#0' (originally '#1').", file.getName(), fileName);
+        LOG.debug("Creating temporary file '{}' (originally '{}').", file.getName(), fileName);
         return file;
     }
 
@@ -453,7 +451,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
         try {
             output = new BufferedOutputStream(new FileOutputStream(file), bufferSize);
             byte[] buffer = new byte[bufferSize];
-            LOG.debug("Streaming file using buffer size #0.", bufferSize);
+            LOG.debug("Streaming file using buffer size {}.", bufferSize);
             for (int length = 0; ((length = input.read(buffer)) > 0); )
                 output.write(buffer, 0, length);
             result = true;
@@ -527,7 +525,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
     private String buildErrorMessage(Throwable e, Object[] args) {
         String errorKey = "struts.message.upload.error." + e.getClass().getSimpleName();
         if (LOG.isDebugEnabled())
-            LOG.debug("Preparing error message for key: [#0]", errorKey);
+            LOG.debug("Preparing error message for key: [{}]", errorKey);
         return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args);
     }
 
@@ -541,7 +539,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
     private String buildMessage(Throwable e, Object[] args) {
         String messageKey = "struts.message.upload.message." + e.getClass().getSimpleName();
         if (LOG.isDebugEnabled())
-            LOG.debug("Preparing message for key: [#0]", messageKey);
+            LOG.debug("Preparing message for key: [{}]", messageKey);
         return LocalizedTextUtil.findText(this.getClass(), messageKey, defaultLocale, e.getMessage(), args);
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
index 6c4b079..f7d7bb0 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
@@ -106,7 +106,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper {
     protected String buildErrorMessage(Throwable e, Object[] args) {
         String errorKey = "struts.messages.upload.error." + e.getClass().getSimpleName();
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Preparing error message for key: [#0]", errorKey);
+            LOG.debug("Preparing error message for key: [{}]", errorKey);
         }
         return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args);
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
index 56f86e5..5628aa4 100644
--- a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
+++ b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
@@ -60,8 +60,8 @@ public class PrefixBasedActionProxyFactory extends DefaultActionProxyFactory {
                     ActionProxyFactory obj = container.getInstance(ActionProxyFactory.class, factoryName);
                     if (obj != null) {
                         actionProxyFactories.put(factoryPrefix, obj);
-                    } else if (LOG.isWarnEnabled()) {
-                        LOG.warn("Invalid PrefixBasedActionProxyFactory config entry: [#0]", factory);
+                    } else {
+                        LOG.warn("Invalid PrefixBasedActionProxyFactory config entry: [{}]", factory);
                     }
                 }
             }
@@ -76,17 +76,13 @@ public class PrefixBasedActionProxyFactory extends DefaultActionProxyFactory {
             String key = uri.substring(0, lastIndex);
             ActionProxyFactory actionProxyFactory = actionProxyFactories.get(key);
             if (actionProxyFactory != null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using ActionProxyFactory [#0] for prefix [#1]", actionProxyFactory, key);
-                }
+                LOG.debug("Using ActionProxyFactory [{}] for prefix [{}]", actionProxyFactory, key);
                 return actionProxyFactory.createActionProxy(namespace, actionName, methodName, extraContext, executeResult, cleanupContext);
-            } else if (LOG.isDebugEnabled()) {
-                LOG.debug("No ActionProxyFactory defined for [#1]", key);
+            } else {
+                LOG.debug("No ActionProxyFactory defined for [{}]", key);
             }
         }
-        if (LOG.isDebugEnabled()){
-            LOG.debug("Cannot find any matching ActionProxyFactory, falling back to [#0]", defaultFactory);
-        }
+        LOG.debug("Cannot find any matching ActionProxyFactory, falling back to [{}]", defaultFactory);
         return defaultFactory.createActionProxy(namespace, actionName, methodName, extraContext, executeResult, cleanupContext);
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
index 5042008..b6410b8 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
@@ -72,9 +72,7 @@ public class CheckboxInterceptor extends AbstractInterceptor {
                 Object values = entry.getValue();
                 iterator.remove();
                 if (values != null && values instanceof String[] && ((String[])values).length > 1) {
-                    if (LOG.isDebugEnabled()) {
-                	    LOG.debug("Bypassing automatic checkbox detection due to multiple checkboxes of the same name: #0", name);
-                    }
+              	    LOG.debug("Bypassing automatic checkbox detection due to multiple checkboxes of the same name: {}", name);
                     continue;
                 }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
index 74e104b..76a4f2c 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
@@ -247,7 +247,7 @@ public class CookieInterceptor extends AbstractInterceptor {
                         populateCookieValueIntoStack(name, value, cookiesMap, stack);
                     }
                 } else {
-                    LOG.warn("Cookie name [#0] with value [#1] was rejected!", name, value);
+                    LOG.warn("Cookie name [{}] with value [{}] was rejected!", name, value);
                 }
             }
         }
@@ -288,12 +288,12 @@ public class CookieInterceptor extends AbstractInterceptor {
         AcceptedPatternsChecker.IsAccepted accepted = acceptedPatternsChecker.isAccepted(name);
         if (accepted.isAccepted()) {
             if (LOG.isTraceEnabled()) {
-                LOG.trace("Cookie [#0] matches acceptedPattern [#1]", name, accepted.getAcceptedPattern());
+                LOG.trace("Cookie [{}] matches acceptedPattern [{}]", name, accepted.getAcceptedPattern());
             }
             return true;
         }
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Cookie [#0] doesn't match acceptedPattern [#1]", name, accepted.getAcceptedPattern());
+            LOG.trace("Cookie [{}] doesn't match acceptedPattern [{}]", name, accepted.getAcceptedPattern());
         }
         return false;
     }
@@ -308,12 +308,12 @@ public class CookieInterceptor extends AbstractInterceptor {
         ExcludedPatternsChecker.IsExcluded excluded = excludedPatternsChecker.isExcluded(name);
         if (excluded.isExcluded()) {
             if (LOG.isTraceEnabled()) {
-                LOG.trace("Cookie [#0] matches excludedPattern [#1]", name, excluded.getExcludedPattern());
+                LOG.trace("Cookie [{}] matches excludedPattern [{}]", name, excluded.getExcludedPattern());
             }
             return true;
         }
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Cookie [#0] doesn't match excludedPattern [#1]", name, excluded.getExcludedPattern());
+            LOG.trace("Cookie [{}] doesn't match excludedPattern [{}]", name, excluded.getExcludedPattern());
         }
         return false;
     }
@@ -335,9 +335,9 @@ public class CookieInterceptor extends AbstractInterceptor {
             // we'll inject it into Struts' action
             if (LOG.isDebugEnabled()) {
                 if (cookiesValueSet.isEmpty())
-                    LOG.debug("no cookie value is configured, cookie with name ["+cookieName+"] with value ["+cookieValue+"] will be injected");
+                    LOG.debug("no cookie value is configured, cookie with name [{}] with value [{}] will be injected", cookieName, cookieValue);
                 else if (cookiesValueSet.contains("*"))
-                    LOG.debug("interceptor is configured to accept any value, cookie with name ["+cookieName+"] with value ["+cookieValue+"] will be injected");
+                    LOG.debug("interceptor is configured to accept any value, cookie with name [{}] with value [{}] will be injected", cookieName, cookieValue);
             }
             cookiesMap.put(cookieName, cookieValue);
             stack.setValue(cookieName, cookieValue);
@@ -347,7 +347,7 @@ public class CookieInterceptor extends AbstractInterceptor {
             // inject them into Struts' action
             if (cookiesValueSet.contains(cookieValue)) {
                 if (LOG.isDebugEnabled()) {
-                    LOG.debug("both configured cookie name and value matched, cookie ["+cookieName+"] with value ["+cookieValue+"] will be injected");
+                    LOG.debug("both configured cookie name and value matched, cookie [{}] with value [{}] will be injected", cookieName, cookieValue);
                 }
 
                 cookiesMap.put(cookieName, cookieValue);
@@ -365,9 +365,7 @@ public class CookieInterceptor extends AbstractInterceptor {
      */
     protected void injectIntoCookiesAwareAction(Object action, Map<String, String> cookiesMap) {
         if (action instanceof CookiesAware) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("action ["+action+"] implements CookiesAware, injecting cookies map ["+cookiesMap+"]");
-            }
+            LOG.debug("Action [{}] implements CookiesAware, injecting cookies map [{}]", action, cookiesMap);
             ((CookiesAware)action).setCookiesMap(cookiesMap);
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
index f2798a0..60313b9 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
@@ -86,7 +86,7 @@ public class CookieProviderInterceptor extends AbstractInterceptor implements Pr
         if (cookies != null) {
             for (Cookie cookie : cookies) {
                 if (LOG.isDebugEnabled()) {
-                    LOG.debug("Sending cookie [#0] with value [#1] for domain [#2]",
+                    LOG.debug("Sending cookie [{}] with value [{}] for domain [{}]",
                             cookie.getName(), cookie.getValue(), (cookie.getDomain() != null ? cookie.getDomain() : "no domain"));
                 }
                 response.addCookie(cookie);
@@ -96,17 +96,13 @@ public class CookieProviderInterceptor extends AbstractInterceptor implements Pr
 
     public void beforeResult(ActionInvocation invocation, String resultCode) {
         try {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("beforeResult start");
-            }
+            LOG.trace("beforeResult start");
             ActionContext ac = invocation.getInvocationContext();
             if (invocation.getAction() instanceof CookieProvider) {
                 HttpServletResponse response = (HttpServletResponse) ac.get(StrutsStatics.HTTP_RESPONSE);
                 addCookiesToResponse((CookieProvider) invocation.getAction(), response);
             }
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("beforeResult end");
-            }
+            LOG.trace("beforeResult end");
         } catch (Exception ex) {
             LOG.error("Unable to setup cookies", ex);
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
index d2632c5..2112401 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
@@ -111,7 +111,7 @@ public class I18nInterceptor extends com.opensymphony.xwork2.interceptor.I18nInt
     @Override
     public String intercept(ActionInvocation invocation) throws Exception {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("intercept '#0/#1' {",
+            LOG.debug("intercept '{}/{}' {",
                 invocation.getProxy().getNamespace(), invocation.getProxy().getActionName());
         }
 
@@ -121,13 +121,13 @@ public class I18nInterceptor extends com.opensymphony.xwork2.interceptor.I18nInt
         saveLocale(invocation, locale);
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("before Locale=#0", invocation.getStack().findValue("locale"));
+            LOG.debug("before Locale={}", invocation.getStack().findValue("locale"));
         }
 
         final String result = invocation.invoke();
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("after Locale=#0", invocation.getStack().findValue("locale"));
+            LOG.debug("after Locale={}", invocation.getStack().findValue("locale"));
             LOG.debug("intercept } ");
         }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
index d7a5150..eb087c1 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
@@ -107,7 +107,7 @@ public class RolesInterceptor extends AbstractInterceptor {
     
     private void checkRoles(List<String> roles){
         if (!areRolesValid(roles)){
-          LOG.fatal("An unknown Role was configured: #0", roles.toString());
+          LOG.fatal("An unknown Role was configured: {}", roles);
           isProperlyConfigured = false;
           throw new IllegalArgumentException("An unknown role was configured: " + roles);
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
index c0fcbde..2641109 100644
--- a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
@@ -118,7 +118,7 @@ public class StrutsUtil {
         }
         catch (Exception e) {
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Cannot include #0", e, aName.toString());
+                LOG.debug("Cannot include {}", e, aName.toString());
             }
             throw e;
         }
@@ -128,9 +128,7 @@ public class StrutsUtil {
         try {
             return URLEncoder.encode(s, "UTF-8");
         } catch (UnsupportedEncodingException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Cannot encode URL [#0]", e, s);
-            }
+            LOG.debug("Cannot encode URL [{}]", s, e);
             return s;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java b/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
index cacdd1c..cb894d4 100644
--- a/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
+++ b/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
@@ -167,10 +167,8 @@ public class SubsetIteratorFilter extends IteratorFilterSupport implements Itera
                 return okToAdd;
             }
             catch(Exception e) {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("Decider [#0] encountered an error while decide adding element [#1], element will be ignored, it will not appeared in subseted iterator",
-                            e, decider.toString(), element.toString());
-                }
+                LOG.warn("Decider [{}] encountered an error while decide adding element [{}], element will be ignored, it will not appeared in subseted iterator",
+                            decider, element, e);
                 return false;
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java b/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
index 10881e9..5b876cc 100644
--- a/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
+++ b/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
@@ -35,8 +35,8 @@ public class JBossFileManager extends DefaultFileManager {
     @Override
     public boolean support() {
         boolean supports = isJBoss7() || isJBoss5();
-        if (supports && LOG.isDebugEnabled()) {
-            LOG.debug("JBoss server detected, Struts 2 will use [#0] to support file system operations!", JBossFileManager.class.getSimpleName());
+        if (supports) {
+            LOG.debug("JBoss server detected, Struts 2 will use [{}] to support file system operations!", JBossFileManager.class.getSimpleName());
         }
         return supports;
     }
@@ -46,9 +46,7 @@ public class JBossFileManager extends DefaultFileManager {
             Class.forName(VFS_JBOSS5);
             return true;
         } catch (ClassNotFoundException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Cannot load [#0] class, not a JBoss 5!", VFS_JBOSS5);
-            }
+            LOG.debug("Cannot load [{}] class, not a JBoss 5!", VFS_JBOSS5);
             return false;
         }
     }
@@ -58,9 +56,7 @@ public class JBossFileManager extends DefaultFileManager {
             Class.forName(VFS_JBOSS7);
             return true;
         } catch (ClassNotFoundException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Cannot load [#0] class, not a JBoss 7!", VFS_JBOSS7);
-            }
+            LOG.debug("Cannot load [{}] class, not a JBoss 7!", VFS_JBOSS7);
             return false;
         }
     }
@@ -69,13 +65,9 @@ public class JBossFileManager extends DefaultFileManager {
     public void monitorFile(URL fileUrl) {
         if (isJBossUrl(fileUrl)) {
             String fileName = fileUrl.toString();
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Creating revision for URL: " + fileName);
-            }
+            LOG.debug("Creating revision for URL: {}", fileName);
             URL normalizedUrl = normalizeToFileProtocol(fileUrl);
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Normalized URL for [#0] is [#1]", fileName, normalizedUrl.toString());
-            }
+            LOG.debug("Normalized URL for [{}] is [{}]", fileName, normalizedUrl);
             Revision revision;
             if ("file".equals(normalizedUrl.getProtocol())) {
                 revision = FileRevision.build(normalizedUrl);
@@ -136,9 +128,7 @@ public class JBossFileManager extends DefaultFileManager {
     protected URL getJBossPhysicalUrl(URL url) throws IOException {
         Object content = url.openConnection().getContent();
         String classContent = content.getClass().toString();
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Reading physical URL for [#0]", url.toString());
-        }
+        LOG.debug("Reading physical URL for [{}]", url);
         if (classContent.startsWith("class org.jboss.vfs.VirtualFile")) { // JBoss 7 and probably 6
             File physicalFile = readJBossPhysicalFile(content);
             return physicalFile.toURI().toURL();
@@ -174,7 +164,7 @@ public class JBossFileManager extends DefaultFileManager {
             Method method = content.getClass().getDeclaredMethod("getPhysicalFile");
             return (File) method.invoke(content);
         } catch (NoSuchMethodException e) {
-            LOG.error("Provided class content [#0] is not a JBoss VirtualFile, getPhysicalFile() method not found!", e, content.getClass().getSimpleName());
+            LOG.error("Provided class content [{}] is not a JBoss VirtualFile, getPhysicalFile() method not found!", content.getClass().getSimpleName(), e);
         } catch (InvocationTargetException e) {
             LOG.error("Cannot invoke getPhysicalFile() method!", e);
         } catch (IllegalAccessException e) {
@@ -191,7 +181,7 @@ public class JBossFileManager extends DefaultFileManager {
             method = handler.getClass().getMethod("getRealURL");
             return (URL) method.invoke(handler);
         } catch (NoSuchMethodException e) {
-            LOG.error("Provided class content [#0] is not a JBoss VirtualFile, getHandler() or getRealURL() method not found!", e, content.getClass().getSimpleName());
+            LOG.error("Provided class content [{}] is not a JBoss VirtualFile, getHandler() or getRealURL() method not found!", content.getClass().getSimpleName(), e);
         } catch (InvocationTargetException e) {
             LOG.error("Cannot invoke getHandler() or getRealURL() method!", e);
         } catch (IllegalAccessException e) {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
index 28b7a5f..c221915 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
@@ -430,9 +430,7 @@ public class FreemarkerManager {
                  }
              }
          } catch (IOException e) {
-             if (LOG.isErrorEnabled()) {
-                LOG.error("Invalid template path specified: #0", e, e.getMessage());
-             }
+             LOG.error("Invalid template path specified: {}", e.getMessage(), e);
          }
 
          // presume that most apps will require the class and webapp template loader

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java b/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
index bf1495b..ba7e37d 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
@@ -83,9 +83,7 @@ public abstract class TagModel implements TemplateTransformModel {
                     try {
                         map.put(entry.getKey(), objectWrapper.unwrap((TemplateModel) value));
                     } catch (TemplateModelException e) {
-                        if (LOG.isErrorEnabled()) {
-                            LOG.error("failed to unwrap [#0] it will be ignored", e, value.toString());
-                        }
+                        LOG.error("failed to unwrap [{}] it will be ignored", value.toString(), e);
                     }
                 }
                 // if it doesn't, we'll do it the old way by just returning the toString() representation

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 111f70b..ab9c4dc 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -259,9 +259,7 @@ public class DefaultUrlHelper implements UrlHelper {
 		try {
 			return URLEncoder.encode(input, encoding);
 		} catch (UnsupportedEncodingException e) {
-			if (LOG.isWarnEnabled()) {
-				LOG.warn("Could not encode URL parameter '#0', returning value un-encoded", input);
-			}
+    		LOG.warn("Could not encode URL parameter '{}', returning value un-encoded", input);
 			return input;
 		}
 	}
@@ -276,9 +274,7 @@ public class DefaultUrlHelper implements UrlHelper {
 		try {
 			return URLDecoder.decode(input, encoding);
 		} catch (UnsupportedEncodingException e) {
-			if (LOG.isWarnEnabled()) {
-				LOG.warn("Could not decode URL parameter '#0', returning value un-decoded", input);
-			}
+    		LOG.warn("Could not decode URL parameter '{}', returning value un-decoded", input);
 			return input;
 		}
 	}

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
index 0b242e3..d552bdb 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
@@ -123,7 +123,7 @@ public class BeanAdapter extends AbstractAdapterElement {
                     if (e instanceof InvocationTargetException)
                         e = (Exception) ((InvocationTargetException) e).getTargetException();
                     if (log.isErrorEnabled()) {
-                        log.error("Cannot access bean property: #0", e, propertyName);
+                        log.error("Cannot access bean property: {}", propertyName, e);
                     }
                     continue;
                 }
@@ -139,14 +139,11 @@ public class BeanAdapter extends AbstractAdapterElement {
                 if (childAdapter != null)
                     newAdapters.add(childAdapter);
 
-                if (log.isDebugEnabled()) {
-                    log.debug(this + " adding adapter: " + childAdapter);
-                }
+                log.debug("{} adding adapter: {}", this, childAdapter);
             }
         } else {
             // No properties found
-            log.info(
-                    "Class " + type.getName() + " has no readable properties, " + " trying to adapt " + getPropertyName() + " with StringAdapter...");
+            log.info("Class {} has no readable properties, trying to adapt {} with StringAdapter...", type.getName(), getPropertyName());
         }
 
         return newAdapters;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
index d0225e8..d3f474b 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
@@ -422,9 +422,7 @@ public class XSLTResult implements Result {
             }
 
         } catch (Exception e) {
-            if (LOG.isErrorEnabled()) {
-                LOG.error("Unable to render XSLT Template, '#0'", e, location);
-            }
+            LOG.error("Unable to render XSLT Template, '{}'", location, e);
             throw e;
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
index 429d25b..4ba807b 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
@@ -145,25 +145,19 @@ public class ConventionUnknownHandler implements UnknownHandler {
             if (!actionName.equals("") && redirectToSlash) {
                 ResultTypeConfig redirectResultTypeConfig = parentPackage.getAllResultTypeConfigs().get("redirect");
                 String redirectNamespace = namespace + "/" + actionName;
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Checking if there is an action named index in the namespace [#0]",
-                            redirectNamespace);
-                }
+                 LOG.trace("Checking if there is an action named index in the namespace {}", redirectNamespace);
 
                 actionConfig = configuration.getRuntimeConfiguration().getActionConfig(redirectNamespace, "index");
                 if (actionConfig != null) {
-                    if (LOG.isTraceEnabled())
-                        LOG.trace("Found action config");
+                    LOG.trace("Found action config");
 
                     PackageConfig packageConfig = configuration.getPackageConfig(actionConfig.getPackageName());
                     if (redirectNamespace.equals(packageConfig.getNamespace())) {
-                        if (LOG.isTraceEnabled())
-                            LOG.trace("Action is not a default - redirecting");
+                        LOG.trace("Action is not a default - redirecting");
                         return buildActionConfig(redirectNamespace + "/", redirectResultTypeConfig);
                     }
 
-                    if (LOG.isTraceEnabled())
-                        LOG.trace("Action was a default - NOT redirecting");
+                    LOG.trace("Action was a default - NOT redirecting");
                 }
 
                 if (resource != null) {
@@ -178,9 +172,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
 
             // try to find index action in current namespace or in default one
             if (actionConfig == null) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Looking for action named [index] in namespace [#0] or in default namespace", namespace);
-                }
+                LOG.trace("Looking for action named [index] in namespace [#0] or in default namespace", namespace);
                 actionConfig = configuration.getRuntimeConfiguration().getActionConfig(namespace, "index");
             }
         }
@@ -198,9 +190,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
     protected Resource findResource(Map<String, ResultTypeConfig> resultsByExtension, String... parts) {
         for (String ext : resultsByExtension.keySet()) {
             String canonicalPath = canonicalize(string(parts) + "." + ext);
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Checking for [#0]", canonicalPath);
-            }
+            LOG.trace("Checking for {}", canonicalPath);
 
             try {
                 if (servletContext.getResource(canonicalPath) != null) {
@@ -208,7 +198,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
                 }
             } catch (MalformedURLException e) {
                 if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to parse path to the web application resource [#0] skipping...", canonicalPath);
+                    LOG.error("Unable to parse path to the web application resource {} skipping...", canonicalPath);
                 }
             }
         }
@@ -249,8 +239,8 @@ public class ConventionUnknownHandler implements UnknownHandler {
         for (String ext : resultsByExtension.keySet()) {
             if (LOG.isTraceEnabled()) {
                 String fqan = ns + "/" + actionName;
-                LOG.trace("Trying to locate the correct result for the FQ action [#0]"
-                        + " with an file extension of [#1] in the directory [#2] " + "and a result code of [#3]",
+                LOG.trace("Trying to locate the correct result for the FQ action [{}]"
+                        + " with an file extension of [#1] in the directory [{}] " + "and a result code of [{}]",
                         fqan, ext, pathPrefix, resultCode);
             }
 
@@ -292,7 +282,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
             for (String ext : resultsByExtension.keySet()) {
                 if (LOG.isTraceEnabled()) {
                     String fqan = ns + "/" + actionName;
-                    LOG.trace("Checking for [#0/index.#1]", fqan, ext);
+                    LOG.trace("Checking for [{}/index.{}]", fqan, ext);
                 }
 
                 String path = string(pathPrefix, actionName, "/index", nameSeparator, resultCode, ".", ext);
@@ -317,7 +307,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
             ActionConfig chainedToConfig = pkg.getActionConfigs().get(chainedTo);
             if (chainedToConfig != null) {
                 if (LOG.isTraceEnabled()) {
-                    LOG.trace("Action [#0] used as chain result for [#1] and result [#2]", chainedTo, actionName, resultCode);
+                    LOG.trace("Action [{}] used as chain result for [{}] and result [{}]", chainedTo, actionName, resultCode);
                 }
 
                 ResultTypeConfig chainResultType = pkg.getAllResultTypeConfigs().get("chain");
@@ -333,7 +323,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
         try {
             boolean traceEnabled = LOG.isTraceEnabled();
             if (traceEnabled)
-                LOG.trace("Checking ServletContext for [#0]", path);
+                LOG.trace("Checking ServletContext for {}", path);
 
             if (servletContext.getResource(path) != null) {
                 if (traceEnabled)
@@ -342,7 +332,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
             }
 
             if (traceEnabled)
-                LOG.trace("Checking ClasLoader for #0", path);
+                LOG.trace("Checking ClasLoader for {}", path);
 
             String classLoaderPath = path.startsWith("/") ? path.substring(1, path.length()) : path;
             if (ClassLoaderUtil.getResource(classLoaderPath, getClass()) != null) {
@@ -352,7 +342,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
             }
         } catch (MalformedURLException e) {
             if (LOG.isErrorEnabled())
-                LOG.error("Unable to parse template path: [#0] skipping...", path);
+                LOG.error("Unable to parse template path: {} skipping...", path);
         }
 
         return null;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
index a678544..0e9edd8 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
@@ -79,7 +79,7 @@ public class DefaultInterceptorMapBuilder implements InterceptorMapBuilder {
                 10);
 	    for (InterceptorRef interceptor : interceptors) {
             if (LOG.isTraceEnabled())
-                LOG.trace("Adding interceptor [#0] to [#1]",
+                LOG.trace("Adding interceptor [{}] to [{}]",
                         interceptor.value(), actionName);
             Map<String, String> params = StringTools.createParameterMap(interceptor
                     .params());

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
index 0847bc7..d27381d 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
@@ -173,7 +173,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
         }
 
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Using final calculated namespace [#0]", namespace);
+            LOG.trace("Using final calculated namespace [{}]", namespace);
         }
 
         // Add that ending slash for concatenation
@@ -243,7 +243,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
             final String resultPath, final String resultPrefix, final String actionName,
             PackageConfig packageConfig, Map<String, ResultTypeConfig> resultsByExtension) {
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Searching for results in the Servlet container at [#0]" +
+            LOG.trace("Searching for results in the Servlet container at [{}]" +
             		" with result prefix of [#1]", resultPath, resultPrefix);
         }
 
@@ -252,23 +252,19 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
         Set<String> paths = servletContext.getResourcePaths(flatResultLayout ? resultPath : resultPrefix);
         if (paths != null) {
             for (String path : paths) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Processing resource path [#0]", path);
-                }
+                LOG.trace("Processing resource path [{}]", path);
 
                 String fileName = StringUtils.substringAfterLast(path, "/");
                 if (StringUtils.isBlank(fileName) || StringUtils.startsWith(fileName, ".")) {
-                    if (LOG.isTraceEnabled())
-                        LOG.trace("Ignoring file without name [#0]", path);
+                    LOG.trace("Ignoring file without name [{}]", path);
                     continue;
                 }
                 else if(fileName.lastIndexOf(".") > 0){
                     String suffix = fileName.substring(fileName.lastIndexOf(".")+1);
 
                     if(conventionsService.getResultTypesByExtension(packageConfig).get(suffix) == null) {
-                        if (LOG.isDebugEnabled())
-                            LOG.debug("No result type defined for file suffix : [#0]. Ignoring file #1", suffix, fileName);
-                	continue;
+                        LOG.debug("No result type defined for file suffix : [{}]. Ignoring file {}", suffix, fileName);
+                    	continue;
                     }
                 }
 
@@ -280,8 +276,8 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
         String classPathLocation = resultPath.startsWith("/") ?
             resultPath.substring(1, resultPath.length()) : resultPath;
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Searching for results in the class path at [#0]"
-                    + " with a result prefix of [#1] and action name [#2]", classPathLocation, resultPrefix,
+            LOG.trace("Searching for results in the class path at [{}]"
+                    + " with a result prefix of [{}] and action name [{}]", classPathLocation, resultPrefix,
                     actionName);
         }
 
@@ -292,9 +288,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
                 Test<URL> resourceTest = getResourceTest(resultPath, actionName);
                 for (Map.Entry<String, URL> entry : matches.entrySet()) {
                     if (resourceTest.test(entry.getValue())) {
-                        if (LOG.isTraceEnabled()) {
-                            LOG.trace("Processing URL [#0]", entry.getKey());
-                        }
+                        LOG.trace("Processing URL [{}]", entry.getKey());
 
                         String urlStr = entry.getValue().toString();
                         int index = urlStr.lastIndexOf(resultPrefix);
@@ -305,8 +299,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
                 }
             }
         } catch (IOException ex) {
-           if (LOG.isErrorEnabled())
-               LOG.error("Unable to scan directory [#0] for results", ex, classPathLocation);
+            LOG.error("Unable to scan directory [{}] for results", ex, classPathLocation);
         }
     }
 
@@ -361,7 +354,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
             // This case is when the path doesn't contain a result code
             if (indexOfDot == resultPrefix.length()) {
                 if (LOG.isTraceEnabled()) {
-                    LOG.trace("The result file [#0] has no result code and therefore" +
+                    LOG.trace("The result file [{}] has no result code and therefore" +
                         " will be associated with success, input and error by default. This might" +
                         " be overridden by another result file or an annotation.", path);
                 }
@@ -373,7 +366,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
             // This case is when the path contains a result code
             } else if (indexOfDot > resultPrefix.length()) {
                 if (LOG.isTraceEnabled()) {
-                    LOG.trace("The result file [#0] has a result code and therefore" +
+                    LOG.trace("The result file [{}] has a result code and therefore" +
                         " will be associated with only that result code.", path);
                 }
 


[02/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
index 11d3f31..7d38122 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMethodAccessor.java
@@ -26,8 +26,8 @@ import ognl.OgnlContext;
 import ognl.OgnlRuntime;
 import ognl.PropertyAccessor;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 
 
@@ -40,7 +40,7 @@ import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
  */
 public class XWorkMethodAccessor extends ObjectMethodAccessor {
 	
-	private static final Logger LOG = LoggerFactory.getLogger(XWorkMethodAccessor.class);
+	private static final Logger LOG = LogManager.getLogger(XWorkMethodAccessor.class);
 
     /**
      * @deprecated Use {@link ReflectionContextState#DENY_METHOD_EXECUTION} instead

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
index 4992281..20eeff8 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
@@ -3,8 +3,8 @@ package com.opensymphony.xwork2.security;
 import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -13,7 +13,7 @@ import java.util.regex.Pattern;
 
 public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultAcceptedPatternsChecker.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultAcceptedPatternsChecker.class);
 
     public static final String[] ACCEPTED_PATTERNS = {
             "\\w+((\\.\\w+)|(\\[\\d+\\])|(\\(\\d+\\))|(\\['(\\w|[\\u4e00-\\u9fa5])+'\\])|(\\('(\\w|[\\u4e00-\\u9fa5])+'\\)))*"

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
index d96b67a..8ac60eb 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/security/DefaultExcludedPatternsChecker.java
@@ -3,8 +3,8 @@ package com.opensymphony.xwork2.security;
 import com.opensymphony.xwork2.*;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -13,7 +13,7 @@ import java.util.regex.Pattern;
 
 public class DefaultExcludedPatternsChecker implements ExcludedPatternsChecker {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultExcludedPatternsChecker.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultExcludedPatternsChecker.class);
 
     public static final String[] EXCLUDED_PATTERNS = {
         "(^|.*#)(dojo|struts|session|request|application|servlet(Request|Response)|parameters|context|_memberAccess)(\\.|\\[).*",

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java
index 56f6b53..2cfb091 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.spring;
 
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.UnsatisfiedDependencyException;
 import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
@@ -39,7 +39,7 @@ import java.util.Map;
  * @author Simon Stewart (sms@lateral.net)
  */
 public class SpringObjectFactory extends ObjectFactory implements ApplicationContextAware {
-    private static final Logger LOG = LoggerFactory.getLogger(SpringObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(SpringObjectFactory.class);
 
     protected ApplicationContext appContext;
     protected AutowireCapableBeanFactory autoWiringFactory;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringProxyableObjectFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringProxyableObjectFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringProxyableObjectFactory.java
index 8d5a524..616ac0f 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringProxyableObjectFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/SpringProxyableObjectFactory.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.spring;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -33,7 +33,7 @@ import java.util.Map;
  */
 public class SpringProxyableObjectFactory extends SpringObjectFactory {
     
-    private static final Logger LOG = LoggerFactory.getLogger(SpringProxyableObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(SpringProxyableObjectFactory.class);
 
     private List<String> skipBeanNames = new ArrayList<String>();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/spring/interceptor/ActionAutowiringInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/interceptor/ActionAutowiringInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/interceptor/ActionAutowiringInterceptor.java
index 473e0dc..611a1a3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/spring/interceptor/ActionAutowiringInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/spring/interceptor/ActionAutowiringInterceptor.java
@@ -20,8 +20,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.spring.SpringObjectFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
@@ -60,7 +60,7 @@ import org.springframework.web.context.WebApplicationContext;
  * @author Eric Hauser
  */
 public class ActionAutowiringInterceptor extends AbstractInterceptor implements ApplicationContextAware {
-    private static final Logger LOG = LoggerFactory.getLogger(ActionAutowiringInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ActionAutowiringInterceptor.class);
 
     public static final String APPLICATION_CONTEXT = "com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor.applicationContext";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
index 71ecc82..6e77ecf 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/DomHelper.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.XWorkException;
 import com.opensymphony.xwork2.util.location.Location;
 import com.opensymphony.xwork2.util.location.LocationAttributes;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -43,7 +43,7 @@ import java.util.Map;
  */
 public class DomHelper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DomHelper.class);
+    private static final Logger LOG = LogManager.getLogger(DomHelper.class);
     
     public static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
index 1e51ded..943a956 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ModelDriven;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProviderFactory;
 import org.apache.commons.lang3.ObjectUtils;
 
@@ -86,7 +86,7 @@ import java.util.concurrent.ConcurrentMap;
  */
 public class LocalizedTextUtil {
 
-    private static final Logger LOG = LoggerFactory.getLogger(LocalizedTextUtil.class);
+    private static final Logger LOG = LogManager.getLogger(LocalizedTextUtil.class);
 
     private static final String TOMCAT_RESOURCE_ENTRIES_FIELD = "resourceEntries";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/ResolverUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/ResolverUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/ResolverUtil.java
index 59d1f3c..e7222cd 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/ResolverUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/ResolverUtil.java
@@ -14,8 +14,8 @@
  */
 package com.opensymphony.xwork2.util;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -66,7 +66,7 @@ import java.util.jar.JarInputStream;
  */
 public class ResolverUtil<T> {
     /** An instance of Log to use for logging in this class. */
-    private static final Logger LOG = LoggerFactory.getLogger(ResolverUtil.class);
+    private static final Logger LOG = LogManager.getLogger(ResolverUtil.class);
 
     /**
      * A simple interface that specifies how to test classes to determine if they

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
index 160a5b9..db436f1 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.util;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -26,7 +26,7 @@ import java.net.URL;
  */
 public class URLUtil {
 
-    private static final Logger LOG = LoggerFactory.getLogger(URLUtil.class);
+    private static final Logger LOG = LogManager.getLogger(URLUtil.class);
 
     /**
      * Verify That the given String is in valid URL format.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java
index 6feee75..d627473 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/XWorkList.java
@@ -20,8 +20,8 @@ import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.XWorkException;
 import com.opensymphony.xwork2.conversion.TypeConverter;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -38,7 +38,7 @@ import java.util.Map;
  * @author Patrick Lightbody
  */
 public class XWorkList extends ArrayList {
-    private static final Logger LOG = LoggerFactory.getLogger(XWorkConverter.class);
+    private static final Logger LOG = LogManager.getLogger(XWorkConverter.class);
 
     private Class clazz;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
index 4475449..bab9368 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/FileResourceStore.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.util.classloader;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -29,7 +29,7 @@ import java.io.InputStream;
  *  class taken from Apache JCI
  */
 public final class FileResourceStore implements ResourceStore {
-    private static final Logger LOG = LoggerFactory.getLogger(FileResourceStore.class);
+    private static final Logger LOG = LogManager.getLogger(FileResourceStore.class);
     private final File root;
 
     public FileResourceStore(final File pFile) {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
index c991f75..19c9524 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/JarResourceStore.java
@@ -16,8 +16,8 @@
 
 package com.opensymphony.xwork2.util.classloader;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.*;
 import java.util.zip.ZipEntry;
@@ -27,7 +27,7 @@ import java.util.zip.ZipFile;
  * Read resources from a jar file
  */
 public class JarResourceStore implements ResourceStore {
-    private static final Logger LOG = LoggerFactory.getLogger(JarResourceStore.class);
+    private static final Logger LOG = LogManager.getLogger(JarResourceStore.class);
 
     private final File file;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
index dd84fcb..7c46ee6 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ReloadingClassLoader.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.FileManager;
 import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.XWorkException;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.ObjectUtils;
 
 import java.io.File;
@@ -41,7 +41,7 @@ import java.util.regex.Pattern;
  * class taken from Apache JCI
  */
 public class ReloadingClassLoader extends ClassLoader {
-    private static final Logger LOG = LoggerFactory.getLogger(ReloadingClassLoader.class);
+    private static final Logger LOG = LogManager.getLogger(ReloadingClassLoader.class);
     private final ClassLoader parent;
     private ResourceStore[] stores;
     private ClassLoader delegate;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java
index dfb0c18..d84c106 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java
@@ -15,15 +15,15 @@
  */
 package com.opensymphony.xwork2.util.classloader;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * class taken from Apache JCI
  */
 public final class ResourceStoreClassLoader extends ClassLoader {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ResourceStoreClassLoader.class);
+    private static final Logger LOG = LogManager.getLogger(ResourceStoreClassLoader.class);
 
     private final ResourceStore[] stores;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
index a80849b..44d4eb2 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/DefaultClassFinder.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.FileManager;
 import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.XWorkException;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
@@ -52,7 +52,7 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
 public class DefaultClassFinder implements ClassFinder {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultClassFinder.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultClassFinder.class);
 
     private final Map<String, List<Info>> annotated = new HashMap<String, List<Info>>();
     private final Map<String, ClassInfo> classInfos = new LinkedHashMap<String, ClassInfo>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
index 47e7642..ffda507 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.util.finder;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.BufferedInputStream;
@@ -47,7 +47,7 @@ import java.util.jar.JarFile;
  * @version $Rev$ $Date$
  */
 public class ResourceFinder {
-    private static final Logger LOG = LoggerFactory.getLogger(ResourceFinder.class);
+    private static final Logger LOG = LogManager.getLogger(ResourceFinder.class);
 
     private final URL[] urls;
     private final String path;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
index ded02ef..c38d5d5 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.util.finder;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -51,7 +51,7 @@ import java.util.Set;
  */
 public class UrlSet {
 
-    private static final Logger LOG = LoggerFactory.getLogger(UrlSet.class);
+    private static final Logger LOG = LogManager.getLogger(UrlSet.class);
 
     private final Map<String,URL> urls;
     private Set<String> protocols;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
index f54d490..b0c93d7 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java
@@ -16,8 +16,8 @@
 package com.opensymphony.xwork2.util.fs;
 
 import com.opensymphony.xwork2.FileManager;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,7 +36,7 @@ import java.util.regex.Pattern;
  */
 public class DefaultFileManager implements FileManager {
 
-    private static Logger LOG = LoggerFactory.getLogger(DefaultFileManager.class);
+    private static Logger LOG = LogManager.getLogger(DefaultFileManager.class);
 
     private static final Pattern JAR_PATTERN = Pattern.compile("^(jar:|wsjar:|zip:|vfsfile:|code-source:)?(file:)?(.*?)(\\!/|\\.jar/)(.*)");
     private static final int JAR_FILE_PATH = 3;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
index ce53a15..741d297 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
@@ -5,8 +5,8 @@ import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -16,7 +16,7 @@ import java.util.Set;
  */
 public class DefaultFileManagerFactory implements FileManagerFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultFileManagerFactory.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultFileManagerFactory.class);
 
     private boolean reloadingConfigs;
     private FileManager systemFileManager;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
index 43fc749..b2c9684 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/fs/JarEntryRevision.java
@@ -1,8 +1,8 @@
 package com.opensymphony.xwork2.util.fs;
 
 import com.opensymphony.xwork2.FileManager;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.io.FileUtils;
 
 import java.io.IOException;
@@ -15,7 +15,7 @@ import java.util.zip.ZipEntry;
  */
 public class JarEntryRevision extends Revision {
 
-    private static Logger LOG = LoggerFactory.getLogger(JarEntryRevision.class);
+    private static Logger LOG = LogManager.getLogger(JarEntryRevision.class);
 
     private static final String JAR_FILE_NAME_SEPARATOR = "!/";
     private static final String JAR_FILE_EXTENSION_END = ".jar/";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/util/profiling/UtilTimerStack.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/profiling/UtilTimerStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/profiling/UtilTimerStack.java
index 13727e5..d9bbf27 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/profiling/UtilTimerStack.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/profiling/UtilTimerStack.java
@@ -26,8 +26,8 @@
  */
 package com.opensymphony.xwork2.util.profiling;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -282,7 +282,7 @@ public class UtilTimerStack
      */
     public static final String MIN_TIME = "xwork.profile.mintime";
     
-    private static final Logger LOG = LoggerFactory.getLogger(UtilTimerStack.class);
+    private static final Logger LOG = LogManager.getLogger(UtilTimerStack.class);
 
     /**
      * Initialized in a static block, it can be changed at runtime by calling setActive(...)

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
index 9b6beb3..b1c475d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator;
 import org.apache.commons.lang3.StringUtils;
 
@@ -59,7 +59,7 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager
 
     private final Map<String, List<ValidatorConfig>> validatorCache = Collections.synchronizedMap(new HashMap<String, List<ValidatorConfig>>());
     private final Map<String, List<ValidatorConfig>> validatorFileCache = Collections.synchronizedMap(new HashMap<String, List<ValidatorConfig>>());
-    private static final Logger LOG = LoggerFactory.getLogger(AnnotationActionValidatorManager.class);
+    private static final Logger LOG = LogManager.getLogger(AnnotationActionValidatorManager.class);
 
     private ValidatorFactory validatorFactory;
     private ValidatorFileParser validatorFileParser;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
index b6d0211..f139401 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
@@ -22,8 +22,8 @@ import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator;
 
 import java.io.IOException;
@@ -52,7 +52,7 @@ public class DefaultActionValidatorManager implements ActionValidatorManager {
 
     private final Map<String, List<ValidatorConfig>> validatorCache = Collections.synchronizedMap(new HashMap<String, List<ValidatorConfig>>());
     private final Map<String, List<ValidatorConfig>> validatorFileCache = Collections.synchronizedMap(new HashMap<String, List<ValidatorConfig>>());
-    private final Logger LOG = LoggerFactory.getLogger(DefaultActionValidatorManager.class);
+    private final Logger LOG = LogManager.getLogger(DefaultActionValidatorManager.class);
     private ValidatorFactory validatorFactory;
     private ValidatorFileParser validatorFileParser;
     private FileManager fileManager;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
index 0b19e24..3f98023 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.XWorkException;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.File;
 import java.io.FilenameFilter;
@@ -50,7 +50,7 @@ import java.util.zip.ZipInputStream;
 public class DefaultValidatorFactory implements ValidatorFactory {
 
     protected Map<String, String> validators = new HashMap<String, String>();
-    private static Logger LOG = LoggerFactory.getLogger(DefaultValidatorFactory.class);
+    private static Logger LOG = LogManager.getLogger(DefaultValidatorFactory.class);
     protected ObjectFactory objectFactory;
     protected ValidatorFileParser validatorFileParser;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
index 603b8fa..b640996 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.providers.XmlHelper;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.DomHelper;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.w3c.dom.*;
 import org.xml.sax.InputSource;
 
@@ -45,7 +45,7 @@ import java.util.*;
  */
 public class DefaultValidatorFileParser implements ValidatorFileParser {
 
-    private static Logger LOG = LoggerFactory.getLogger(DefaultValidatorFileParser.class);
+    private static Logger LOG = LogManager.getLogger(DefaultValidatorFileParser.class);
 
     static final String DEFAULT_MULTI_TEXTVALUE_SEPARATOR = " ";
     static final String MULTI_TEXTVALUE_SEPARATOR_CONFIG_KEY = "xwork.validatorfileparser.multi_textvalue_separator";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
index 6807926..c47d277 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.validator;
 
 import com.opensymphony.xwork2.*;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.*;
 
@@ -259,11 +259,11 @@ public class DelegatingValidatorContext implements ValidatorContext {
         private Logger log;
 
         public LoggingValidationAware(Class clazz) {
-            log = LoggerFactory.getLogger(clazz);
+            log = LogManager.getLogger(clazz);
         }
 
         public LoggingValidationAware(Object obj) {
-            log = LoggerFactory.getLogger(obj.getClass());
+            log = LogManager.getLogger(obj.getClass());
         }
 
         public void setActionErrors(Collection<String> errorMessages) {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/ValidationInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/ValidationInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/ValidationInterceptor.java
index 3402487..84788ca 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/ValidationInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/ValidationInterceptor.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.Validateable;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
 import com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: description -->
@@ -130,7 +130,7 @@ public class ValidationInterceptor extends MethodFilterInterceptor {
     
     private ActionValidatorManager actionValidatorManager;
     
-    private static final Logger LOG = LoggerFactory.getLogger(ValidationInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ValidationInterceptor.class);
     
     private final static String VALIDATE_PREFIX = "validate";
     private final static String ALT_VALIDATE_PREFIX = "validateDo";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
index 22eb341..183ea65 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.validator.validators;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.ValidationException;
 import org.apache.commons.lang3.StringUtils;
 
@@ -25,7 +25,7 @@ import org.apache.commons.lang3.StringUtils;
  */
 public abstract class RangeValidatorSupport<T extends Comparable> extends FieldValidatorSupport {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RangeValidatorSupport.class);
+    private static final Logger LOG = LogManager.getLogger(RangeValidatorSupport.class);
 
     private final Class<T> type;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
index 0c6fc13..778c522 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RegexFieldValidator.java
@@ -16,8 +16,8 @@
 
 package com.opensymphony.xwork2.validator.validators;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.ValidationException;
 import org.apache.commons.lang3.StringUtils;
 
@@ -80,7 +80,7 @@ import java.util.regex.Pattern;
  */
 public class RegexFieldValidator extends FieldValidatorSupport {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RegexFieldValidator.class);
+    private static final Logger LOG = LogManager.getLogger(RegexFieldValidator.class);
 
     private String regex;
     private String regexExpression;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java
index 348b5ce..b6f7014 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.PreResultListener;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.ValidationException;
 import org.apache.commons.lang3.StringEscapeUtils;
 
@@ -134,7 +134,7 @@ import java.util.Map;
  */
 public abstract class RepopulateConversionErrorFieldValidatorSupport extends FieldValidatorSupport {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RepopulateConversionErrorFieldValidatorSupport.class);
+    private static final Logger LOG = LogManager.getLogger(RepopulateConversionErrorFieldValidatorSupport.class);
 
     private boolean repopulateField = false;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ValidatorSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ValidatorSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ValidatorSupport.java
index 69c5e6a..9dd3f50 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ValidatorSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ValidatorSupport.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.validator.validators;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.validator.DelegatingValidatorContext;
 import com.opensymphony.xwork2.validator.ShortCircuitableValidator;
 import com.opensymphony.xwork2.validator.ValidationException;
@@ -39,7 +39,7 @@ import java.util.List;
  */
 public abstract class ValidatorSupport implements Validator, ShortCircuitableValidator {
 
-    protected final Logger log = LoggerFactory.getLogger(this.getClass());
+    protected final Logger log = LogManager.getLogger(this.getClass());
 
     protected String defaultMessage = "";
     protected String messageKey;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
index 23206ab..06e7f06 100644
--- a/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
@@ -17,11 +17,7 @@ package com.opensymphony.xwork2;
 
 import com.opensymphony.xwork2.util.ValueStack;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.ResourceBundle;
+import java.util.*;
 
 /**
  * Unit test for {@link ActionSupport}.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/test/java/com/opensymphony/xwork2/UnknownHandlerManagerMock.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/UnknownHandlerManagerMock.java b/xwork-core/src/test/java/com/opensymphony/xwork2/UnknownHandlerManagerMock.java
index 8b6eb5a..b27024a 100644
--- a/xwork-core/src/test/java/com/opensymphony/xwork2/UnknownHandlerManagerMock.java
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/UnknownHandlerManagerMock.java
@@ -1,7 +1,5 @@
 package com.opensymphony.xwork2;
 
-import com.opensymphony.xwork2.DefaultUnknownHandlerManager;
-
 import java.util.ArrayList;
 
 /*

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/TimerInterceptorTest.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/TimerInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/TimerInterceptorTest.java
index f658536..424d607 100644
--- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/TimerInterceptorTest.java
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/TimerInterceptorTest.java
@@ -19,7 +19,7 @@ import com.opensymphony.xwork2.SimpleFooAction;
 import com.opensymphony.xwork2.XWorkTestCase;
 import com.opensymphony.xwork2.mock.MockActionInvocation;
 import com.opensymphony.xwork2.mock.MockActionProxy;
-import com.opensymphony.xwork2.util.logging.Logger;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Unit test for {@link TimerInterceptor}.


[05/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcherCompatWeblogic61.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcherCompatWeblogic61.java b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcherCompatWeblogic61.java
index c46dc4b..6598d71 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcherCompatWeblogic61.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcherCompatWeblogic61.java
@@ -29,8 +29,8 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.struts2.config.ServletContextSingleton;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -52,7 +52,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class FilterDispatcherCompatWeblogic61 extends FilterDispatcher {
 
-    private static Logger LOG = LoggerFactory.getLogger(FilterDispatcherCompatWeblogic61.class);
+    private static Logger LOG = LogManager.getLogger(FilterDispatcherCompatWeblogic61.class);
 
     /**
      * dummy setter for {@link #filterConfig}; this method

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
index b4ad906..1f07c42 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 
 import javax.servlet.http.HttpServletResponse;
@@ -80,7 +80,7 @@ import java.util.Map;
 public class HttpHeaderResult implements Result {
 
     private static final long serialVersionUID = 195648957144219214L;
-    private static final Logger LOG = LoggerFactory.getLogger(HttpHeaderResult.class);
+    private static final Logger LOG = LogManager.getLogger(HttpHeaderResult.class);
 
     /**
      * This result type doesn't have a default param, null is ok to reduce noice in logs

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java b/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java
index fc14aab..38259eb 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.dispatcher;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletResponse;
@@ -77,7 +77,7 @@ public class PlainTextResult extends StrutsResultSupport {
 
     public static final int BUFFER_SIZE = 1024;
 
-    private static final Logger LOG = LoggerFactory.getLogger(PlainTextResult.class);
+    private static final Logger LOG = LogManager.getLogger(PlainTextResult.class);
 
     private static final long serialVersionUID = 3633371605905583950L;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java
index 3550a8e..6cd5eb1 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java
@@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.struts2.ServletActionContext;
@@ -95,7 +95,7 @@ public class ServletDispatcherResult extends StrutsResultSupport {
 
     private static final long serialVersionUID = -1970659272360685627L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(ServletDispatcherResult.class);
+    private static final Logger LOG = LogManager.getLogger(ServletDispatcherResult.class);
 
     private UrlHelper urlHelper;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
index 786deef..2293c59 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionException;
 import com.opensymphony.xwork2.util.reflection.ReflectionExceptionHandler;
 import org.apache.struts2.ServletActionContext;
@@ -100,7 +100,7 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec
 
     private static final long serialVersionUID = 6316947346435301270L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(ServletRedirectResult.class);
+    private static final Logger LOG = LogManager.getLogger(ServletRedirectResult.class);
 
     protected boolean prependServletContext = true;
     protected ActionMapper actionMapper;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java b/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java
index 66a17c9..05236ec 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java
@@ -27,8 +27,8 @@ import java.io.OutputStream;
 import javax.servlet.http.HttpServletResponse;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -91,7 +91,7 @@ public class StreamResult extends StrutsResultSupport {
 
     private static final long serialVersionUID = -1468409635999059850L;
 
-    protected static final Logger LOG = LoggerFactory.getLogger(StreamResult.class);
+    protected static final Logger LOG = LogManager.getLogger(StreamResult.class);
 
     public static final String DEFAULT_PARAM = "inputName";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
index bbcffa3..b7d57ba 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java
@@ -31,8 +31,8 @@ import org.apache.struts2.StrutsStatics;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -105,7 +105,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public abstract class StrutsResultSupport implements Result, StrutsStatics {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsResultSupport.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsResultSupport.class);
 
     /** The default parameter */
     public static final String DEFAULT_PARAM = "location";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
index 8b37b6c..2a00ad9 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.views.JspSupportServlet;
@@ -85,7 +85,7 @@ public class VelocityResult extends StrutsResultSupport {
 
     private static final long serialVersionUID = 7268830767762559424L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(VelocityResult.class);
+    private static final Logger LOG = LogManager.getLogger(VelocityResult.class);
     
     private String defaultEncoding;
     private VelocityManager velocityManager;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
index 654fb1d..17a4611 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
@@ -24,8 +24,8 @@ package org.apache.struts2.dispatcher.mapper;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 
 import javax.servlet.http.HttpServletRequest;
@@ -47,7 +47,7 @@ import java.util.List;
  */
 public class CompositeActionMapper implements ActionMapper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CompositeActionMapper.class);
+    private static final Logger LOG = LogManager.getLogger(CompositeActionMapper.class);
 
     protected List<ActionMapper> actionMappers = new LinkedList<ActionMapper>();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
index a7a1a69..1370d0e 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.RequestUtils;
 import org.apache.struts2.ServletActionContext;
@@ -110,7 +110,7 @@ import java.util.regex.Pattern;
  */
 public class DefaultActionMapper implements ActionMapper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultActionMapper.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultActionMapper.class);
 
     protected static final String METHOD_PREFIX = "method:";
     protected static final String ACTION_PREFIX = "action:";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
index 0abfaeb..f43d802 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java
@@ -3,8 +3,8 @@ package org.apache.struts2.dispatcher.mapper;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.RequestUtils;
 import org.apache.struts2.StrutsConstants;
 
@@ -41,7 +41,7 @@ import java.util.Map;
  */
 public class PrefixBasedActionMapper extends DefaultActionMapper implements ActionMapper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PrefixBasedActionMapper.class);
+    private static final Logger LOG = LogManager.getLogger(PrefixBasedActionMapper.class);
 
     protected Container container;
     protected Map<String, ActionMapper> actionMappers = new HashMap<String, ActionMapper>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
index 3f08e84..d00d797 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
@@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher.mapper;
 
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 
 import javax.servlet.http.HttpServletRequest;
@@ -38,7 +38,7 @@ import java.util.StringTokenizer;
  */
 public class Restful2ActionMapper extends DefaultActionMapper {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(Restful2ActionMapper.class);
+    protected static final Logger LOG = LogManager.getLogger(Restful2ActionMapper.class);
     public static final String HTTP_METHOD_PARAM = "__http_method";
     private String idParameterName = null;
     

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
index b2378f4..7af01c3 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.dispatcher.mapper;
 
 import com.opensymphony.xwork2.config.ConfigurationManager;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.RequestUtils;
 
 import javax.servlet.http.HttpServletRequest;
@@ -38,7 +38,7 @@ import java.util.StringTokenizer;
  * http://struts.apache.org/2.x/docs/restfulactionmapper.html
  */
 public class RestfulActionMapper implements ActionMapper {
-    protected static final Logger LOG = LoggerFactory.getLogger(RestfulActionMapper.class);
+    protected static final Logger LOG = LogManager.getLogger(RestfulActionMapper.class);
 
     /* (non-Javadoc)
      * @see org.apache.struts2.dispatcher.mapper.ActionMapper#getMapping(javax.servlet.http.HttpServletRequest)

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
index eecec0e..5e1d19d 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
@@ -24,8 +24,8 @@ package org.apache.struts2.dispatcher.multipart;
 import com.opensymphony.xwork2.LocaleProvider;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadBase;
 import org.apache.commons.fileupload.FileUploadException;
@@ -54,7 +54,7 @@ import java.util.Set;
  */
 public class JakartaMultiPartRequest implements MultiPartRequest {
 
-    static final Logger LOG = LoggerFactory.getLogger(JakartaMultiPartRequest.class);
+    static final Logger LOG = LogManager.getLogger(JakartaMultiPartRequest.class);
 
     // maps parameter name -> List of FileItem objects
     protected Map<String, List<FileItem>> files = new HashMap<String, List<FileItem>>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
index 6fbd2c3..e0c5294 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
@@ -3,8 +3,8 @@ package org.apache.struts2.dispatcher.multipart;
 import com.opensymphony.xwork2.LocaleProvider;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.fileupload.FileItemIterator;
 import org.apache.commons.fileupload.FileItemStream;
 import org.apache.commons.fileupload.FileUploadBase;
@@ -40,7 +40,7 @@ import java.util.Map;
  */
 public class JakartaStreamMultiPartRequest implements MultiPartRequest {
 
-    static final Logger LOG = LoggerFactory.getLogger(JakartaStreamMultiPartRequest.class);
+    static final Logger LOG = LogManager.getLogger(JakartaStreamMultiPartRequest.class);
 
     /**
      * Defines the internal buffer size used during streaming operations.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
index ddc4275..6c4b079 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
@@ -24,8 +24,8 @@ package org.apache.struts2.dispatcher.multipart;
 import com.opensymphony.xwork2.DefaultLocaleProvider;
 import com.opensymphony.xwork2.LocaleProvider;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.dispatcher.StrutsRequestWrapper;
 
 import javax.servlet.http.HttpServletRequest;
@@ -58,7 +58,7 @@ import java.util.Vector;
  */
 public class MultiPartRequestWrapper extends StrutsRequestWrapper {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(MultiPartRequestWrapper.class);
+    protected static final Logger LOG = LogManager.getLogger(MultiPartRequestWrapper.class);
 
     private Collection<String> errors;
     private MultiPartRequest multi;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java b/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java
index 6bce2b6..e0c4316 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java
@@ -23,6 +23,7 @@ package org.apache.struts2.dispatcher.ng;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.StaticContentLoader;
@@ -46,6 +47,7 @@ public class InitOperations {
     /**
      * Initializes the internal Struts logging
      */
+    @Deprecated
     public void initLogging( HostConfig filterConfig ) {
         String factoryName = filterConfig.getInitParameter("loggerFactory");
         if (factoryName != null) {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java b/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
index ccf21c7..bb60ce4 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
@@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher.ng;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.RequestUtils;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.Dispatcher;
@@ -45,12 +45,12 @@ import java.util.regex.Pattern;
  */
 public class PrepareOperations {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PrepareOperations.class);
+    private static final Logger LOG = LogManager.getLogger(PrepareOperations.class);
 
     private Dispatcher dispatcher;
     private static final String STRUTS_ACTION_MAPPING_KEY = "struts.actionMapping";
     public static final String CLEANUP_RECURSION_COUNTER = "__cleanup_recursion_counter";
-    private Logger log = LoggerFactory.getLogger(PrepareOperations.class);
+    private Logger log = LogManager.getLogger(PrepareOperations.class);
 
     @Deprecated
     public PrepareOperations(ServletContext servletContext, Dispatcher dispatcher) {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
index afbb189..56f86e5 100644
--- a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
+++ b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java
@@ -5,8 +5,8 @@ import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.DefaultActionProxyFactory;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 
 import java.util.HashMap;
@@ -33,7 +33,7 @@ import java.util.Map;
  */
 public class PrefixBasedActionProxyFactory extends DefaultActionProxyFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PrefixBasedActionProxyFactory.class);
+    private static final Logger LOG = LogManager.getLogger(PrefixBasedActionProxyFactory.class);
 
     private Map<String, ActionProxyFactory> actionProxyFactories = new HashMap<String, ActionProxyFactory>();
     private ActionProxyFactory defaultFactory;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
index b611ebc..5042008 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 
 import java.util.Map;
@@ -55,7 +55,7 @@ public class CheckboxInterceptor extends AbstractInterceptor {
 
     private String uncheckedValue = Boolean.FALSE.toString();
 
-    private static final Logger LOG = LoggerFactory.getLogger(CheckboxInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(CheckboxInterceptor.class);
 
     public String intercept(ActionInvocation ai) throws Exception {
         Map<String, Object> parameters = ai.getInvocationContext().getParameters();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
index 6e44570..cf2d797 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
@@ -26,8 +26,8 @@ import java.util.Map;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: description -->
@@ -77,7 +77,7 @@ public class ClearSessionInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = -2102199238428329238L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(ClearSessionInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ClearSessionInterceptor.class);
 
     /* (non-Javadoc)
      * @see com.opensymphony.xwork2.interceptor.Interceptor#intercept(com.opensymphony.xwork2.ActionInvocation)

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
index 06c4c30..74e104b 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java
@@ -29,8 +29,8 @@ import com.opensymphony.xwork2.security.AcceptedPatternsChecker;
 import com.opensymphony.xwork2.security.ExcludedPatternsChecker;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 
 import javax.servlet.http.Cookie;
@@ -167,7 +167,7 @@ public class CookieInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = 4153142432948747305L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(CookieInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(CookieInterceptor.class);
 
     private static final String ACCEPTED_PATTERN = "[a-zA-Z0-9\\.\\]\\[_'\\s]+";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
index 88d829c..f2798a0 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CookieProviderInterceptor.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.interceptor.PreResultListener;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsStatics;
 
 import javax.servlet.http.Cookie;
@@ -68,7 +68,7 @@ import java.util.Set;
  */
 public class CookieProviderInterceptor extends AbstractInterceptor implements PreResultListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CookieProviderInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(CookieProviderInterceptor.class);
 
     public String intercept(ActionInvocation invocation) throws Exception {
         invocation.addPreResultListener(this);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java
index 39a7024..89251f4 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java
@@ -23,8 +23,8 @@ package org.apache.struts2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.SessionMap;
 
@@ -83,7 +83,7 @@ public class CreateSessionInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = -4590322556118858869L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(CreateSessionInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(CreateSessionInterceptor.class);
 
 
     /* (non-Javadoc)

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java
index f5bda69..cef6905 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java
@@ -11,12 +11,12 @@ import java.util.Map.Entry;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.Interceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 public class DateTextFieldInterceptor implements Interceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DateTextFieldInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(DateTextFieldInterceptor.class);
 
     public static enum DateWord {
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java
index bf4d17f..16974d8 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java
@@ -5,8 +5,8 @@ import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 
 import java.lang.reflect.Field;
@@ -25,7 +25,7 @@ import java.util.Set;
  */
 public class DeprecationInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DeprecationInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(DeprecationInterceptor.class);
 
     private Container container;
     private boolean devMode;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
index 7d8b542..9d42dfb 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
@@ -32,8 +32,8 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.util.TokenHelper;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.Dispatcher;
@@ -175,7 +175,7 @@ public class ExecuteAndWaitInterceptor extends MethodFilterInterceptor {
 
     private static final long serialVersionUID = -2754639196749652512L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(ExecuteAndWaitInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ExecuteAndWaitInterceptor.class);
 
     public static final String KEY = "__execWait";
     public static final String WAIT = "wait";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
index 78970a0..109f11a 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
@@ -32,8 +32,8 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
 import org.apache.struts2.util.ContentTypeMatcher;
@@ -189,7 +189,7 @@ public class FileUploadInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = -4764627478894962478L;
 
-    protected static final Logger LOG = LoggerFactory.getLogger(FileUploadInterceptor.class);
+    protected static final Logger LOG = LogManager.getLogger(FileUploadInterceptor.class);
 
     protected Long maximumSize;
     protected Set<String> allowedTypesSet = Collections.emptySet();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
index b7509f0..3c358f5 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
@@ -32,8 +32,8 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: description -->
@@ -152,7 +152,7 @@ public class MessageStoreInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = 9161650888603380164L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(MessageStoreInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(MessageStoreInterceptor.class);
 
     public static final String AUTOMATIC_MODE = "AUTOMATIC";
     public static final String STORE_MODE = "STORE";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
index f55f1d2..d7a5150 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java
@@ -23,8 +23,8 @@ package org.apache.struts2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 
 import javax.servlet.http.HttpServletRequest;
@@ -88,7 +88,7 @@ import java.util.List;
  */
 public class RolesInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RolesInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(RolesInterceptor.class);
 
     private boolean isProperlyConfigured = true;
     

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java
index 8863833..28cca41 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java
@@ -35,8 +35,8 @@ import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.interceptor.PreResultListener;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: description -->
@@ -144,7 +144,7 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi
 
     private static final long serialVersionUID = 9120762699600054395L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(ScopeInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ScopeInterceptor.class);
 
     private String[] application = null;
     private String[] session = null;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
index 743a380..7ff8799 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
@@ -50,8 +50,8 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.interceptor.PreResultListener;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 
 /**
@@ -93,7 +93,7 @@ public class DebuggingInterceptor extends AbstractInterceptor {
 
     private static final long serialVersionUID = -3097324155953078783L;
 
-    private final static Logger LOG = LoggerFactory.getLogger(DebuggingInterceptor.class);
+    private final static Logger LOG = LogManager.getLogger(DebuggingInterceptor.class);
 
     private String[] ignorePrefixes = new String[]{"org.apache.struts.",
             "com.opensymphony.xwork2.", "xwork."};

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java b/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java
index a597d64..1d005c2 100644
--- a/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java
+++ b/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java
@@ -27,8 +27,8 @@ import java.util.List;
 import java.util.StringTokenizer;
 
 import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -38,7 +38,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class IteratorGenerator implements Iterator, Action {
 
-    private static final Logger LOG = LoggerFactory.getLogger(IteratorGenerator.class);
+    private static final Logger LOG = LogManager.getLogger(IteratorGenerator.class);
 
     List values;
     Object value;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java b/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java
index aef043d..f57b5e6 100644
--- a/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java
+++ b/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java
@@ -28,7 +28,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -67,7 +67,7 @@ public class SortIteratorFilter extends IteratorFilterSupport implements Iterato
         } else {
             try {
                 if (!MakeIterator.isIterable(source)) {
-                    LoggerFactory.getLogger(SortIteratorFilter.class.getName()).warn("Cannot create SortIterator for source " + source);
+                    LogManager.getLogger(SortIteratorFilter.class.getName()).warn("Cannot create SortIterator for source " + source);
 
                     return ERROR;
                 }
@@ -86,7 +86,7 @@ public class SortIteratorFilter extends IteratorFilterSupport implements Iterato
 
                 return SUCCESS;
             } catch (Exception e) {
-                LoggerFactory.getLogger(SortIteratorFilter.class.getName()).warn("Error creating sort iterator.", e);
+                LogManager.getLogger(SortIteratorFilter.class.getName()).warn("Error creating sort iterator.", e);
 
                 return ERROR;
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
index 38aa3f3..c0fcbde 100644
--- a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
+++ b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.jsp.ui.OgnlTool;
 import org.apache.struts2.views.util.UrlHelper;
 
@@ -54,7 +54,7 @@ import java.util.Map;
  */
 public class StrutsUtil {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(StrutsUtil.class);
+    protected static final Logger LOG = LogManager.getLogger(StrutsUtil.class);
 
     protected HttpServletRequest request;
     protected HttpServletResponse response;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java b/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
index 3b8ac4a..cacdd1c 100644
--- a/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
+++ b/core/src/main/java/org/apache/struts2/util/SubsetIteratorFilter.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.util;
 
 import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -36,7 +36,7 @@ import java.util.List;
  */
 public class SubsetIteratorFilter extends IteratorFilterSupport implements Iterator, Action {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SubsetIteratorFilter.class);
+    private static final Logger LOG = LogManager.getLogger(SubsetIteratorFilter.class);
 
     Iterator iterator;
     Object source;
@@ -69,7 +69,7 @@ public class SubsetIteratorFilter extends IteratorFilterSupport implements Itera
     // Action implementation -----------------------------------------
     public String execute() {
         if (source == null) {
-            LoggerFactory.getLogger(SubsetIteratorFilter.class.getName()).warn("Source is null returning empty set.");
+            LogManager.getLogger(SubsetIteratorFilter.class.getName()).warn("Source is null returning empty set.");
 
             return ERROR;
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
index 303adde..6449667 100644
--- a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
+++ b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
@@ -23,8 +23,8 @@ package org.apache.struts2.util;
 
 import com.opensymphony.xwork2.TextProvider;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Collections;
 import java.util.List;
@@ -34,7 +34,7 @@ import java.util.List;
  */
 public class TextProviderHelper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(TextProviderHelper.class);
+    private static final Logger LOG = LogManager.getLogger(TextProviderHelper.class);
 
      /**
      * <p>Get a message from the first TextProvider encountered in the stack.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/TokenHelper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/TokenHelper.java b/core/src/main/java/org/apache/struts2/util/TokenHelper.java
index 2e103da..c19a3ba 100644
--- a/core/src/main/java/org/apache/struts2/util/TokenHelper.java
+++ b/core/src/main/java/org/apache/struts2/util/TokenHelper.java
@@ -23,8 +23,8 @@ package org.apache.struts2.util;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.math.BigInteger;
 import java.security.SecureRandom;
@@ -51,7 +51,7 @@ public class TokenHelper {
      * The name of the field which will hold the token name
      */
     public static final String TOKEN_NAME_FIELD = "struts.token.name";
-    private static final Logger LOG = LoggerFactory.getLogger(TokenHelper.class);
+    private static final Logger LOG = LogManager.getLogger(TokenHelper.class);
     private static final Random RANDOM = new SecureRandom();
 
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java b/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
index b4a2b15..10881e9 100644
--- a/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
+++ b/core/src/main/java/org/apache/struts2/util/fs/JBossFileManager.java
@@ -4,8 +4,8 @@ import com.opensymphony.xwork2.util.fs.DefaultFileManager;
 import com.opensymphony.xwork2.util.fs.FileRevision;
 import com.opensymphony.xwork2.util.fs.JarEntryRevision;
 import com.opensymphony.xwork2.util.fs.Revision;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.File;
 import java.io.IOException;
@@ -22,7 +22,7 @@ import java.util.List;
  */
 public class JBossFileManager extends DefaultFileManager {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JBossFileManager.class);
+    private static final Logger LOG = LogManager.getLogger(JBossFileManager.class);
 
     private static final String JBOSS5_VFS = "vfs";
     private static final String JBOSS5_VFSZIP = "vfszip";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
index a99235e..28b7a5f 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import freemarker.cache.ClassTemplateLoader;
 import freemarker.cache.FileTemplateLoader;
 import freemarker.cache.MultiTemplateLoader;
@@ -158,7 +158,7 @@ public class FreemarkerManager {
 
     // end freemarker definitions...
 
-    private static final Logger LOG = LoggerFactory.getLogger(FreemarkerManager.class);
+    private static final Logger LOG = LogManager.getLogger(FreemarkerManager.class);
     public static final String CONFIG_SERVLET_CONTEXT_KEY = "freemarker.Configuration";
     public static final String KEY_EXCEPTION = "exception";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
index 3ded53b..e5258e6 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.LocaleProvider;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import freemarker.template.Configuration;
 import freemarker.template.ObjectWrapper;
 import freemarker.template.Template;
@@ -104,7 +104,7 @@ public class FreemarkerResult extends StrutsResultSupport {
 
     private static final long serialVersionUID = -3778230771704661631L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(FreemarkerResult.class);
+    private static final Logger LOG = LogManager.getLogger(FreemarkerResult.class);
 
     protected ActionInvocation invocation;
     protected Configuration configuration;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java b/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
index 3b3565c..bf1495b 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/tags/TagModel.java
@@ -24,8 +24,8 @@ package org.apache.struts2.views.freemarker.tags;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import freemarker.ext.beans.BeansWrapper;
 import freemarker.template.SimpleNumber;
 import freemarker.template.SimpleSequence;
@@ -43,7 +43,7 @@ import java.util.Iterator;
 import java.util.Map;
 
 public abstract class TagModel implements TemplateTransformModel {
-    private static final Logger LOG = LoggerFactory.getLogger(TagModel.class);
+    private static final Logger LOG = LogManager.getLogger(TagModel.class);
 
     protected ValueStack stack;
     protected HttpServletRequest req;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/jsp/BeanTag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/BeanTag.java b/core/src/main/java/org/apache/struts2/views/jsp/BeanTag.java
index 5c21421..f630580 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/BeanTag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/BeanTag.java
@@ -28,8 +28,8 @@ import org.apache.struts2.components.Bean;
 import org.apache.struts2.components.Component;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -39,7 +39,7 @@ public class BeanTag extends ContextBeanTag {
 
     private static final long serialVersionUID = -3863152522071209267L;
 
-    protected static Logger LOG = LoggerFactory.getLogger(BeanTag.class);
+    protected static Logger LOG = LogManager.getLogger(BeanTag.class);
 
     protected String name;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java b/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java
index 76371a9..81ac85c 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java
@@ -29,8 +29,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 import org.apache.struts2.views.jsp.StrutsBodyTagSupport;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -134,7 +134,7 @@ public class IteratorGeneratorTag extends StrutsBodyTagSupport {
 
     public static final String DEFAULT_SEPARATOR = ",";
 
-    private static final Logger LOG = LoggerFactory.getLogger(IteratorGeneratorTag.class);
+    private static final Logger LOG = LogManager.getLogger(IteratorGeneratorTag.class);
 
     String countAttr;
     String separatorAttr;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java b/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java
index 196b8b0..0149f59 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java
@@ -29,8 +29,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 import org.apache.struts2.views.jsp.StrutsBodyTagSupport;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -155,7 +155,7 @@ public class SubsetIteratorTag extends StrutsBodyTagSupport {
 
     private static final long serialVersionUID = -6252696081713080102L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(SubsetIteratorTag.class);
+    private static final Logger LOG = LogManager.getLogger(SubsetIteratorTag.class);
 
     String countAttr;
     String sourceAttr;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
index 21c5d00..aa6379d 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.views.jsp.ui;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.beans.PropertyDescriptor;
 import java.beans.SimpleBeanInfo;
@@ -37,7 +37,7 @@ import java.util.List;
  */
 public class AbstractUITagBeanInfo extends SimpleBeanInfo {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractUITagBeanInfo.class);
+    private static final Logger LOG = LogManager.getLogger(AbstractUITagBeanInfo.class);
 
     @Override
     public PropertyDescriptor[] getPropertyDescriptors() {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
index 460c138..111f70b 100644
--- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
+++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.views.util;
 
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
@@ -45,7 +45,7 @@ import java.util.Map;
  */
 public class DefaultUrlHelper implements UrlHelper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultUrlHelper.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultUrlHelper.class);
 
     public static final String HTTP_PROTOCOL = "http";
     public static final String HTTPS_PROTOCOL = "https";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
index e026a2c..51aff4a 100644
--- a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
+++ b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
@@ -66,7 +66,7 @@ import java.util.StringTokenizer;
  *
  */
 public class VelocityManager {
-    private static final Logger LOG = LoggerFactory.getLogger(VelocityManager.class);
+    private static final Logger LOG = LogManager.getLogger(VelocityManager.class);
     public static final String STRUTS = "struts";
     private ObjectFactory objectFactory;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java b/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java
index 34b2446..5d1e567 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java
@@ -33,8 +33,8 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.UserDataHandler;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * AbstractAdapterNode is the base for childAdapters that expose a read-only view
@@ -82,7 +82,7 @@ public abstract class AbstractAdapterNode implements AdapterNode {
             };
 
     private List<Node> childAdapters;
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     // The domain object that we are adapting
     private Object propertyValue;
@@ -92,8 +92,8 @@ public abstract class AbstractAdapterNode implements AdapterNode {
 
 
     public AbstractAdapterNode() {
-        if (LoggerFactory.getLogger(getClass()).isDebugEnabled()) {
-            LoggerFactory.getLogger(getClass()).debug("Creating " + this);
+        if (LogManager.getLogger(getClass()).isDebugEnabled()) {
+            LogManager.getLogger(getClass()).debug("Creating " + this);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java
index 4804650..75ad827 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java
@@ -26,15 +26,15 @@ import java.util.List;
 
 import org.w3c.dom.Node;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
  */
 public class ArrayAdapter extends AbstractAdapterElement {
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     public ArrayAdapter() {
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
index 043fc75..0b242e3 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.views.xslt;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsException;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -65,7 +65,7 @@ public class BeanAdapter extends AbstractAdapterElement {
 
     //~ Instance fields ////////////////////////////////////////////////////////
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     //~ Constructors ///////////////////////////////////////////////////////////
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
index e7f2727..a720ccb 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java
@@ -27,15 +27,15 @@ import java.util.List;
 
 import org.w3c.dom.Node;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
  */
 public class CollectionAdapter extends AbstractAdapterElement {
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     public CollectionAdapter() { }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java
index 18c6db3..5c3389a 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java
@@ -31,8 +31,8 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.TypeInfo;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * ProxyElementAdapter is a pass-through adapter for objects which already
@@ -45,7 +45,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class ProxyElementAdapter extends ProxyNodeAdapter implements Element {
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     public ProxyElementAdapter(AdapterFactory factory, AdapterNode parent, Element value) {
         super(factory, parent, value);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java
index 72a1388..26b23ee 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java
@@ -25,8 +25,8 @@ import org.w3c.dom.DOMException;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * ProxyNodeAdapter is a read-only delegating adapter for objects which already
@@ -36,7 +36,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public abstract class ProxyNodeAdapter extends AbstractAdapterNode {
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     public ProxyNodeAdapter(AdapterFactory factory, AdapterNode parent, Node value) {
         setContext(factory, parent, "document"/*propname unused*/, value);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java b/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java
index 8b4d39c..0496c4d 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java
@@ -29,8 +29,8 @@ import javax.xml.transform.TransformerException;
 import javax.xml.transform.URIResolver;
 import javax.xml.transform.stream.StreamSource;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -42,7 +42,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class ServletURIResolver implements URIResolver {
 
-    private Logger log = LoggerFactory.getLogger(getClass());
+    private Logger log = LogManager.getLogger(getClass());
     static final String PROTOCOL = "response:";
 
     private ServletContext sc;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java b/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java
index 1a21915..a1c2092 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java
@@ -26,11 +26,11 @@ import java.util.List;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 public class SimpleNodeList implements NodeList {
-    private Logger log = LoggerFactory.getLogger(SimpleNodeList.class);
+    private Logger log = LogManager.getLogger(SimpleNodeList.class);
 
     private List<Node> nodes;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java
index b7c1dad..d4509d1 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java
@@ -29,8 +29,8 @@ import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
 import com.opensymphony.xwork2.util.DomHelper;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * StringAdapter adapts a Java String value to a DOM Element with the specified
@@ -47,7 +47,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class StringAdapter extends AbstractAdapterElement {
 
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
     boolean parseStringAsXML;
 
     public StringAdapter() {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
index 7c3dd77..d0225e8 100644
--- a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
+++ b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
@@ -210,7 +210,7 @@ public class XSLTResult implements Result {
     private static final long serialVersionUID = 6424691441777176763L;
 
     /** Log instance for this result. */
-    private static final Logger LOG = LoggerFactory.getLogger(XSLTResult.class);
+    private static final Logger LOG = LogManager.getLogger(XSLTResult.class);
 
     /** 'stylesheetLocation' parameter.  Points to the xsl. */
     public static final String DEFAULT_PARAM = "stylesheetLocation";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java b/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java
index 4a34076..c97a90c 100644
--- a/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java
+++ b/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java
@@ -1,7 +1,5 @@
 package org.apache.struts2;
 
-import com.opensymphony.xwork2.inject.Container;
-import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
 
 import java.util.HashMap;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/ExecutionCountTestAction.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/ExecutionCountTestAction.java b/core/src/test/java/org/apache/struts2/ExecutionCountTestAction.java
index 88b32e6..31d048a 100644
--- a/core/src/test/java/org/apache/struts2/ExecutionCountTestAction.java
+++ b/core/src/test/java/org/apache/struts2/ExecutionCountTestAction.java
@@ -22,8 +22,8 @@
 package org.apache.struts2;
 
 import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 
 /**
@@ -34,7 +34,7 @@ public class ExecutionCountTestAction extends ActionSupport {
     private static final long serialVersionUID = -2954211394678430609L;
 
 
-    private static final Logger LOG = LoggerFactory.getLogger(ExecutionCountTestAction.class);
+    private static final Logger LOG = LogManager.getLogger(ExecutionCountTestAction.class);
 
 
     private int executionCount = 0;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/ServletActionContextTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/ServletActionContextTest.java b/core/src/test/java/org/apache/struts2/ServletActionContextTest.java
index bd904ee..f29b2e9 100644
--- a/core/src/test/java/org/apache/struts2/ServletActionContextTest.java
+++ b/core/src/test/java/org/apache/struts2/ServletActionContextTest.java
@@ -21,18 +21,16 @@
 
 package org.apache.struts2;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.TestCase;
-
 import com.mockobjects.servlet.MockHttpServletRequest;
 import com.mockobjects.servlet.MockHttpServletResponse;
 import com.mockobjects.servlet.MockServletContext;
 import com.opensymphony.xwork2.ActionContext;
+import junit.framework.TestCase;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java b/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java
index 6816481..81f575d 100644
--- a/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java
+++ b/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java
@@ -22,7 +22,6 @@
 package org.apache.struts2;
 
 import com.opensymphony.xwork2.XWorkTestCase;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.util.StrutsTestCaseHelper;
@@ -32,11 +31,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Formatter;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
+import java.util.logging.*;
 
 /**
  * Base test case for JUnit testing Struts.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/test/java/org/apache/struts2/TestAction.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/TestAction.java b/core/src/test/java/org/apache/struts2/TestAction.java
index a95b37a..dde13e5 100644
--- a/core/src/test/java/org/apache/struts2/TestAction.java
+++ b/core/src/test/java/org/apache/struts2/TestAction.java
@@ -26,11 +26,7 @@ import com.opensymphony.xwork2.ActionSupport;
 import com.opensymphony.xwork2.util.ValueStack;
 import org.apache.struts2.views.jsp.ui.User;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**


[08/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
index ee6516f..702e1d3 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
@@ -143,7 +143,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         this.redirectToSlash = Boolean.parseBoolean(redirectToSlash);
 
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Setting action default parent package to [#0]", defaultParentPackage);
+            LOG.trace("Setting action default parent package to [{}]", defaultParentPackage);
         }
 
         this.defaultParentPackage = defaultParentPackage;
@@ -478,8 +478,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         if (includeJars == null) {
             urlSet = urlSet.exclude(".*?\\.jar(!/|/)?");
         } else {
-            LOG.debug("jar urls regexes were specified: #0", Arrays.asList(includeJars));
-
+            if(LOG.isDebugEnabled()) {
+                LOG.debug("jar urls regexes were specified: {}", Arrays.asList(includeJars));
+            }
             List<URL> rawIncludedUrls = urlSet.getUrls();
             Set<URL> includeUrls = new HashSet<URL>();
             boolean[] patternUsed = new boolean[includeJars.length];
@@ -496,7 +497,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                         }
                     }
                 } else {
-                    LOG.debug("It is not a jar [#0]", url);
+                    LOG.debug("It is not a jar [{}]", url);
                     includeUrls.add(url);
                 }
             }
@@ -504,7 +505,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
             if (LOG.isWarnEnabled()) {
                 for (int i = 0; i < patternUsed.length; i++) {
                     if (!patternUsed[i]) {
-                        LOG.warn("The includeJars pattern [#0] did not match any jars in the classpath", includeJars[i]);
+                        LOG.warn("The includeJars pattern [{}] did not match any jars in the classpath", includeJars[i]);
                     }
                 }
             }
@@ -637,8 +638,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                 try {
                     return inPackage && (nameMatches || (checkImplementsAction && com.opensymphony.xwork2.Action.class.isAssignableFrom(classInfo.get())));
                 } catch (ClassNotFoundException ex) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Unable to load class [#0]", ex, classInfo.getName());
+                    LOG.error("Unable to load class [{}]", ex, classInfo.getName());
                     return false;
                 }
             }
@@ -655,8 +655,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
 
             // Skip classes that can't be instantiated
             if (cannotInstantiate(actionClass)) {
-                if (LOG.isTraceEnabled())
-                    LOG.trace("Class [#0] did not pass the instantiation test and will be ignored", actionClass.getName());
+                LOG.trace("Class [{}] did not pass the instantiation test and will be ignored", actionClass.getName());
                 continue;
             }
 
@@ -665,8 +664,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                 try {
                     objectFactory.getClassInstance(actionClass.getName());
                 } catch (ClassNotFoundException e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Object Factory was unable to load class [#0]", e, actionClass.getName());
+                    LOG.error("Object Factory was unable to load class [{}]", e, actionClass.getName());
                     throw new StrutsException("Object Factory was unable to load class " + actionClass.getName(), e);
                 }
             }
@@ -674,7 +672,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
             // Determine the action package
             String actionPackage = actionClass.getPackage().getName();
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Processing class [#0] in package [#1]", actionClass.getName(), actionPackage);
+                LOG.debug("Processing class [{}] in package [{}]", actionClass.getName(), actionPackage);
             }
 
             // Determine the default namespace and action name
@@ -789,9 +787,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         //single namespace
         Namespace namespaceAnnotation = AnnotationUtils.findAnnotation(actionClass, Namespace.class);
         if (namespaceAnnotation != null) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Using non-default action namespace from Namespace annotation of [#0]", namespaceAnnotation.value());
-            }
+            LOG.trace("Using non-default action namespace from Namespace annotation of [{}]", namespaceAnnotation.value());
 
             namespaces.add(namespaceAnnotation.value());
         }
@@ -804,7 +800,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                 for (Namespace namespace : namespacesAnnotation.value())
                     sb.append(namespace.value()).append(",");
                 sb.deleteCharAt(sb.length() - 1);
-                LOG.trace("Using non-default action namespaces from Namespaces annotation of [#0]", sb.toString());
+                LOG.trace("Using non-default action namespaces from Namespaces annotation of [{}]", sb.toString());
             }
 
             for (Namespace namespace : namespacesAnnotation.value())
@@ -859,9 +855,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
      */
     protected String determineActionName(Class<?> actionClass) {
         String actionName = actionNameBuilder.build(actionClass.getSimpleName());
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Got actionName for class [#0] of [#1]", actionClass.toString(), actionName);
-        }
+        LOG.trace("Got actionName for class [{}] of [{}]", actionClass.toString(), actionName);
 
         return actionName;
     }
@@ -939,7 +933,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         actionConfig.methodName(actionMethod);
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Creating action config for class [#0], name [#1] and package name [#2] in namespace [#3]",
+            LOG.debug("Creating action config for class [{}], name [{}] and package name [{}] in namespace [{}]",
                     actionClass.toString(), actionName, pkgCfg.getName(), pkgCfg.getNamespace());
         }
 
@@ -972,8 +966,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         if (existingPkg != null) {
             // there is a package already with that name, check action
             ActionConfig existingActionConfig = existingPkg.getActionConfigs().get(actionName);
-            if (existingActionConfig != null && LOG.isWarnEnabled())
-                LOG.warn("Duplicated action definition in package [#0] with name [#1].", pkgCfg.getName(), actionName);
+            if (existingActionConfig != null && LOG.isWarnEnabled()) {
+                LOG.warn("Duplicated action definition in package [{}] with name [{}].", pkgCfg.getName(), actionName);
+            }
         }
 
         //watch class file
@@ -988,8 +983,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         List<ExceptionMappingConfig> exceptionMappings = new ArrayList<ExceptionMappingConfig>();
 
         for (ExceptionMapping exceptionMapping : exceptions) {
-            if (LOG.isTraceEnabled())
-                LOG.trace("Mapping exception [#0] to result [#1] for action [#2]", exceptionMapping.exception(),
+            LOG.trace("Mapping exception [{}] to result [{}] for action [{}]", exceptionMapping.exception(),
                         exceptionMapping.result(), actionName);
             ExceptionMappingConfig.Builder builder = new ExceptionMappingConfig.Builder(null, exceptionMapping
                     .exception(), exceptionMapping.result());
@@ -1005,9 +999,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                                                    String actionNamespace, final String actionPackage, final Class<?> actionClass,
                                                    Action action) {
         if (action != null && !action.value().equals(Action.DEFAULT_VALUE)) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Using non-default action namespace from the Action annotation of [#0]", action.value());
-            }
+            LOG.trace("Using non-default action namespace from the Action annotation of [{}]", action.value());
             String actionName = action.value();
             actionNamespace = StringUtils.contains(actionName, "/") ? StringUtils.substringBeforeLast(actionName, "/") : StringUtils.EMPTY;
         }
@@ -1016,10 +1008,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
         ParentPackage parent = AnnotationUtils.findAnnotation(actionClass, ParentPackage.class);
         String parentName = null;
         if (parent != null) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Using non-default parent package from annotation of [#0]", parent.value());
-            }
-
+            LOG.trace("Using non-default parent package from annotation of [{}]", parent.value());
             parentName = parent.value();
         }
 
@@ -1051,14 +1040,11 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
             if (defaultInterceptorRef != null) {
                 pkgConfig.defaultInterceptorRef(defaultInterceptorRef.value());
 
-                if (LOG.isTraceEnabled())
-                    LOG.trace("Setting [#0] as the default interceptor ref for [#1]", defaultInterceptorRef.value(), pkgConfig.getName());
+                LOG.trace("Setting [{}] as the default interceptor ref for [{}]", defaultInterceptorRef.value(), pkgConfig.getName());
             }
         }
 
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Created package config named [#0] with a namespace [#1]", name, actionNamespace);
-        }
+        LOG.trace("Created package config named [{}] with a namespace [{}]", name, actionNamespace);
 
         return pkgConfig;
     }
@@ -1110,18 +1096,16 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
                             parent.addActionConfig(parentAction, indexActionConfig);
                         }
                     } else if (LOG.isTraceEnabled()) {
-                        LOG.trace("The parent namespace [#0] already contains " +
-                                "an action [#1]", parentNamespace, parentAction);
+                        LOG.trace("The parent namespace [{}] already contains " +
+                                "an action [{}]", parentNamespace, parentAction);
                     }
                 }
             }
 
             // Step #3
             if (pkgConfig.build().getAllActionConfigs().get("") == null) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Creating index ActionConfig with an action name of [] for the action " +
-                            "class [#0]", indexActionConfig.getClassName());
-                }
+                LOG.trace("Creating index ActionConfig with an action name of [] for the action " +
+                            "class [{}]", indexActionConfig.getClassName());
 
                 pkgConfig.addActionConfig("", indexActionConfig);
             }
@@ -1137,7 +1121,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
             for (String url : loadedFileUrls) {
                 if (fileManager.fileNeedsReloading(url)) {
                     if (LOG.isDebugEnabled())
-                        LOG.debug("File [#0] changed, configuration will be reloaded", url);
+                        LOG.debug("File [{}] changed, configuration will be reloaded", url);
                     return true;
                 }
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
----------------------------------------------------------------------
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
index 84420d7..f2920c0 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/SEOActionNameBuilder.java
@@ -89,9 +89,7 @@ public class SEOActionNameBuilder implements ActionNameBuilder {
             actionName = actionName.toLowerCase();
         }
 
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Changed action name from [#0] to [#1]", className, actionName);
-        }
+        LOG.trace("Changed action name from [{}] to [{}]", className, actionName);
 
         return actionName;
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
----------------------------------------------------------------------
diff --git a/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java b/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
index 127d173..280ae91 100644
--- a/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
+++ b/plugins/embeddedjsp/src/main/java/org/apache/struts2/JSPLoader.java
@@ -81,9 +81,7 @@ public class JSPLoader {
     public Servlet load(String location) throws Exception {
         location = StringUtils.substringBeforeLast(location, "?");
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Compiling JSP [#0]", location);
-        }
+        LOG.debug("Compiling JSP [{}]", location);
 
         //use Jasper to compile the JSP into java code
         JspC jspC = compileJSP(location);
@@ -137,14 +135,10 @@ public class JSPLoader {
      * Compiles the given source code into java bytecode
      */
     private void compileJava(String className, final String source, Set<String> extraClassPath) throws IOException {
-        if (LOG.isTraceEnabled())
-            LOG.trace("Compiling [#0], source: [#1]", className, source);
-
-        JavaCompiler compiler =
-                ToolProvider.getSystemJavaCompiler();
+        LOG.trace("Compiling [{}], source: [{}]", className, source);
 
-        DiagnosticCollector<JavaFileObject> diagnostics =
-                new DiagnosticCollector<JavaFileObject>();
+        JavaCompiler compiler =ToolProvider.getSystemJavaCompiler();
+        DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
 
         //the generated bytecode is fed to the class loader
         JavaFileManager jfm = new

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
----------------------------------------------------------------------
diff --git a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
index 7fc8e16..81641a5 100644
--- a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
+++ b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
@@ -100,10 +100,7 @@ public class ValueStackDataSource implements JRRewindableDataSource {
         }
 
         Object value = valueStack.findValue(expression);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Field [#0] = [#1]", field.getName(), value);
-        }
+        LOG.debug("Field [{}] = [{}]", field.getName(), value);
 
         if (!wrapField && MakeIterator.isIterable(value) && !field.getValueClass().isInstance(value)) {
             return value;
@@ -132,9 +129,7 @@ public class ValueStackDataSource implements JRRewindableDataSource {
                 iterator = MakeIterator.convert(array);
             }
         } else {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Data source value for data source [" + dataSource + "] was null");
-            }
+            LOG.warn("Data source value for data source [{}] was null", dataSource);
         }
     }
 
@@ -156,14 +151,12 @@ public class ValueStackDataSource implements JRRewindableDataSource {
         if ((iterator != null) && (iterator.hasNext())) {
             valueStack.push(iterator.next());
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Pushed next value: " + valueStack.findValue("."));
+                LOG.debug("Pushed next value: {}", valueStack.findValue("."));
             }
 
             return true;
         } else {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("No more values");
-            }
+            LOG.debug("No more values");
 
             return false;
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
----------------------------------------------------------------------
diff --git a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
index 6bd3035..76f9caa 100644
--- a/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
+++ b/plugins/java8-support/src/main/java/org/apache/struts2/convention/Java8ClassFinder.java
@@ -93,8 +93,7 @@ public class Java8ClassFinder implements ClassFinder {
                     }
                 }
             } catch (Exception e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Unable to read URL [#0]", e, location.toExternalForm());
+                LOG.error("Unable to read URL [{}]", location.toExternalForm(), e);
             }
         }
 
@@ -103,8 +102,7 @@ public class Java8ClassFinder implements ClassFinder {
                 if (classNameFilter.test(className))
                     readClassDef(className);
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Unable to read class [#0]", e, className);
+                LOG.error("Unable to read class [{}]", className, e);
             }
         }
     }
@@ -197,8 +195,7 @@ public class Java8ClassFinder implements ClassFinder {
                         classes.add(clazz);
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -228,8 +225,7 @@ public class Java8ClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -259,8 +255,7 @@ public class Java8ClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -290,8 +285,7 @@ public class Java8ClassFinder implements ClassFinder {
                         }
                     }
                 } catch (Throwable e) {
-                    if (LOG.isErrorEnabled())
-                        LOG.error("Error loading class [#0]", e, classInfo.getName());
+                    LOG.error("Error loading class [{}]", classInfo.getName(), e);
                     classesNotLoaded.add(classInfo.getName());
                 }
             }
@@ -310,8 +304,7 @@ public class Java8ClassFinder implements ClassFinder {
                     classes.add(classInfo.get());
                 }
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -327,8 +320,7 @@ public class Java8ClassFinder implements ClassFinder {
                     classes.add(classInfo.get());
                 }
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -342,8 +334,7 @@ public class Java8ClassFinder implements ClassFinder {
             try {
                 classes.add(classInfo.get());
             } catch (Throwable e) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Error loading class [#0]", e, classInfo.getName());
+                LOG.error("Error loading class [{}]", classInfo.getName(), e);
                 classesNotLoaded.add(classInfo.getName());
             }
         }
@@ -360,8 +351,7 @@ public class Java8ClassFinder implements ClassFinder {
                     urls.add(url);
                 }
             } catch (IOException ioe) {
-                if (LOG.isErrorEnabled())
-                    LOG.error("Could not read driectory [#0]", ioe, dirName);
+                LOG.error("Could not read directory [{}]", dirName, ioe);
             }
         }
 
@@ -405,9 +395,9 @@ public class Java8ClassFinder implements ClassFinder {
             } finally {
                 in.close();
             }
-        } else if (LOG.isDebugEnabled())
-            LOG.debug("Unable to read [#0]", location.toExternalForm());
-        
+        } else {
+            LOG.debug("Unable to read [{}]", location.toExternalForm());
+        }
         return Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
index b31b9be..bc73d8f 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTagHandlerFactory.java
@@ -41,8 +41,7 @@ public class DefaultTagHandlerFactory implements TagHandlerFactory {
             th.setNext(next);
             return th;
         } catch (Exception e) {
-            if (LOG.isErrorEnabled())
-                LOG.error("Failed to instantiate tag handler class [#0]", e, tagHandlerClass.getName());
+            LOG.error("Failed to instantiate tag handler class [{}]", tagHandlerClass.getName(), e);
         }
         
         return null;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
index 1e3076a..2cba9bc 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/DefaultTheme.java
@@ -116,9 +116,7 @@ public class DefaultTheme implements Theme {
 
         TagGenerator gen = (TagGenerator) handlers.get(0);
         try {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Rendering tag [#0]", tagName);
-            }
+            LOG.trace("Rendering tag [{}]", tagName);
             gen.generate();
         } catch (IOException ex) {
             throw new StrutsException("Unable to write tag: " + tagName, ex);

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
----------------------------------------------------------------------
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
index 26a7ea3..4c3f29e 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/JavaTemplateEngine.java
@@ -71,9 +71,7 @@ public class JavaTemplateEngine extends BaseTemplateEngine {
         Theme theme = themes.get(t.getTheme());
         if (theme == null) {
             // Theme not supported, so do what struts would have done if we were not here.
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Theme not found [#0] trying default template engine using template type [#1]", t.getTheme(), defaultTemplateType);
-            }
+            LOG.debug("Theme not found [{}] trying default template engine using template type [{}]", t.getTheme(), defaultTemplateType);
             final TemplateEngine engine = templateEngineManager.getTemplateEngine(templateContext.getTemplate(), defaultTemplateType);
 
             if (engine == null) {
@@ -120,24 +118,16 @@ public class JavaTemplateEngine extends BaseTemplateEngine {
         while (customThemes.hasMoreTokens()) {
             String themeClass = customThemes.nextToken().trim();
             try {
-                if (LOG.isInfoEnabled()) {
-                    LOG.info("Registering custom theme [#0] to javatemplates engine", themeClass);
-                }
+                LOG.info("Registering custom theme [{}] to javatemplates engine", themeClass);
                 ObjectFactory factory = ActionContext.getContext().getContainer().getInstance(ObjectFactory.class);
                 Theme theme = (Theme) factory.buildBean(themeClass, new HashMap<String, Object>());
                 themes.add(theme);
             } catch (ClassCastException cce) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Invalid java them class [#0]. Class does not implement 'org.apache.struts2.views.java.Theme' interface", cce, themeClass);
-                }
+                LOG.error("Invalid java them class [{}]. Class does not implement 'org.apache.struts2.views.java.Theme' interface", themeClass, cce);
             } catch (ClassNotFoundException cnf) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Invalid java theme class [#0]. Class not found!", cnf, themeClass);
-                }
+                LOG.error("Invalid java theme class [{}]. Class not found!", themeClass, cnf);
             } catch (Exception e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Could not find messages file [#0].properties. Skipping!", e, themeClass);
-                }
+                LOG.error("Could not find messages file [{}].properties. Skipping!", themeClass, e);
             }
         }
     }
@@ -152,8 +142,8 @@ public class JavaTemplateEngine extends BaseTemplateEngine {
         // Make sure we don't set ourself as default for race condition
         if (defaultTemplateTheme != null && !defaultTemplateTheme.equalsIgnoreCase(getSuffix())) {
             this.defaultTemplateType = defaultTemplateTheme.toLowerCase();
-        } else if(LOG.isErrorEnabled()) {
-            LOG.error("Invalid struts.javatemplates.defaultTemplateType value. Cannot be [#0]!", getSuffix());
+        } else {
+            LOG.error("Invalid struts.javatemplates.defaultTemplateType value. Cannot be [{}]!", getSuffix());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
index 39529d2..41262d2 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
@@ -420,7 +420,7 @@ public class JSONWriter {
 
             Object key = entry.getKey();
             if (key == null) {
-                LOG.error("Cannot build expression for null key in #0", exprStack);
+                LOG.error("Cannot build expression for null key in {}", exprStack);
                 continue;
             }
 
@@ -438,7 +438,7 @@ public class JSONWriter {
             hasData = true;
             if (!warnedNonString && !(key instanceof String)) {
                 if (LOG.isWarnEnabled()) {
-                    LOG.warn("JavaScript doesn't support non-String keys, using toString() on #0", key.getClass().getName());
+                    LOG.warn("JavaScript doesn't support non-String keys, using toString() on {}", key.getClass().getName());
                 }
                 warnedNonString = true;
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
index 199f183..c5103be 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/DefaultBundleAccessor.java
@@ -110,8 +110,7 @@ public class DefaultBundleAccessor implements BundleAccessor {
         Bundle bundle = getCurrentBundle();
         if (bundle != null) {
             Class cls = bundle.loadClass(className);
-            if (LOG.isTraceEnabled())
-                LOG.trace("Located class [#0] in bundle [#1]", className, bundle.getSymbolicName());
+            LOG.trace("Located class [{}] in bundle [{}]", className, bundle.getSymbolicName());
             return cls;
         }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
index 63620cb..b24eb8a 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiConfigurationProvider.java
@@ -115,9 +115,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene
      */
     protected void loadConfigFromBundle(Bundle bundle) {
         String bundleName = bundle.getSymbolicName();
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Loading packages from bundle [#0]", bundleName);
-        }
+        LOG.debug("Loading packages from bundle [{}]", bundleName);
 
         //init action context
         ActionContext ctx = ActionContext.getContext();
@@ -132,9 +130,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene
             ctx.put(ClassLoaderInterface.CLASS_LOADER_INTERFACE, new BundleClassLoaderInterface());
             ctx.put(BundleAccessor.CURRENT_BUNDLE_NAME, bundleName);
 
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Loading XML config from bundle [#0]", bundleName);
-            }
+            LOG.trace("Loading XML config from bundle [{}]", bundleName);
 
             //XML config
             PackageLoader loader = new BundlePackageLoader();
@@ -149,8 +145,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene
 
             PackageProvider conventionPackageProvider = configuration.getContainer().getInstance(PackageProvider.class, "convention.packageProvider");
             if (conventionPackageProvider != null) {
-                if (LOG.isTraceEnabled())
-                    LOG.trace("Loading Convention config from bundle [#0]", bundleName);
+                LOG.trace("Loading Convention config from bundle [{}]", bundleName);
                 conventionPackageProvider.loadPackages();
             }
 
@@ -235,8 +230,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene
         if (bundleName != null && shouldProcessBundle(bundle)) {
             switch (bundleEvent.getType()) {
                 case BundleEvent.STARTED:
-                    if (LOG.isTraceEnabled())
-                        LOG.trace("The bundlde [#0] has been activated and will be scanned for struts configuration", bundleName);
+                    LOG.trace("The bundle [{}] has been activated and will be scanned for struts configuration", bundleName);
                     loadConfigFromBundle(bundle);
                     break;
                 case BundleEvent.STOPPED:
@@ -255,7 +249,7 @@ public class OsgiConfigurationProvider implements PackageProvider, BundleListene
         Set<String> packages = bundleAccessor.getPackagesByBundle(bundle);
         if (!packages.isEmpty()) {
             if (LOG.isTraceEnabled()) {
-                LOG.trace("The bundle [#0] has been stopped. The packages [#1] will be disabled", bundle.getSymbolicName(), StringUtils.join(packages, ","));
+                LOG.trace("The bundle [{}] has been stopped. The packages [{}] will be disabled", bundle.getSymbolicName(), StringUtils.join(packages, ","));
             }
             for (String packageName : packages) {
                 configuration.removePackageConfig(packageName);

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
index b5eaf6f..60c478a 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/OsgiUtil.java
@@ -58,8 +58,7 @@ public class OsgiUtil {
             Method getBeanMethod = beanFactory.getClass().getMethod("getBean", String.class);
             return getBeanMethod.invoke(beanFactory, beanId);
         } catch (Exception ex) {
-            if (LOG.isErrorEnabled())
-                LOG.error("Unable to call getBean() on object of type [#0], with bean id [#1]", ex, beanFactory.getClass().getName(), beanId);
+            LOG.error("Unable to call getBean() on object of type [{}], with bean id [{}]",  beanFactory.getClass().getName(), beanId, ex);
         }
 
         return null;
@@ -74,8 +73,7 @@ public class OsgiUtil {
             Method getBeanMethod = beanFactory.getClass().getMethod("containsBean", String.class);
             return (Boolean) getBeanMethod.invoke(beanFactory, beanId);
         } catch (Exception ex) {
-            if (LOG.isErrorEnabled())
-                LOG.error("Unable to call containsBean() on object of type [#0], with bean id [#1]", ex, beanFactory.getClass().getName(), beanId);
+            LOG.error("Unable to call containsBean() on object of type [{}], with bean id [{}]", beanFactory.getClass().getName(), beanId, ex);
         }
 
         return false;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
index b379538..f594899 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/StrutsOsgiListener.java
@@ -25,9 +25,8 @@ public class StrutsOsgiListener implements ServletContextListener {
         ServletContext servletContext = sce.getServletContext();
 
         String platform = servletContext.getInitParameter(PLATFORM_KEY);
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Defined OSGi platform as [#0] via context-param [#1]", platform, PLATFORM_KEY);
-        }
+        LOG.debug("Defined OSGi platform as [{}] via context-param [{}]", platform, PLATFORM_KEY);
+
         osgiHost = OsgiHostFactory.createOsgiHost(platform);
         servletContext.setAttribute(OSGI_HOST, osgiHost);
         try {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
index 0225616..fdd5c74 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java
@@ -145,19 +145,17 @@ public abstract class BaseOsgiHost implements OsgiHost {
                         for (String runLevel : runLevelDirs) {
                             dirs.put(runLevel, StringUtils.chomp(dir,  "/") + "/" + runLevel);
                         }
-                    } else if (LOG.isDebugEnabled()) {
-                        LOG.debug("No run level directories found under the [#0] directory", dir);
+                    } else {
+                        LOG.debug("No run level directories found under the [{}] directory", dir);
                     }
-                } else if (LOG.isWarnEnabled()) {
-                    LOG.warn("Unable to read [#0] directory", dir);
+                } else {
+                    LOG.warn("Unable to read [{}] directory", dir);
                 }
-            } else if (LOG.isWarnEnabled()) {
-                LOG.warn("The [#0] directory was not found", dir);
+            } else {
+                LOG.warn("The [{}] directory was not found", dir);
             }
         } catch (Exception e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Unable load bundles from the [#0] directory", e, dir);
-            }
+            LOG.warn("Unable load bundles from the [{}] directory", dir, e);
         }
         return dirs;
     }
@@ -180,25 +178,21 @@ public abstract class BaseOsgiHost implements OsgiHost {
                         //add all the bundles to the list
                         for (File bundle : bundles) {
                             String externalForm = bundle.toURI().toURL().toExternalForm();
-                            if (LOG.isDebugEnabled()) {
-                                LOG.debug("Adding bundle [#0]", externalForm);
-                            }
+                            LOG.debug("Adding bundle [{}]", externalForm);
                             bundleJars.add(externalForm);
                         }
 
-                    } else if (LOG.isDebugEnabled()) {
-                        LOG.debug("No bundles found under the [#0] directory", dir);
+                    } else {
+                        LOG.debug("No bundles found under the [{}] directory", dir);
                     }
-                } else if (LOG.isWarnEnabled()) {
-                    LOG.warn("Unable to read [#0] directory", dir);
+                } else {
+                    LOG.warn("Unable to read [{}] directory", dir);
                 }
-            } else if (LOG.isWarnEnabled()) {
-                LOG.warn("The [#0] directory was not found", dir);
+            } else {
+                LOG.warn("The [{}] directory was not found", dir);
             }
         } catch (Exception e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Unable load bundles from the [#0] directory", e, dir);
-            }
+            LOG.warn("Unable load bundles from the [{}] directory", dir, e);
         }
         return bundleJars;
     }
@@ -254,9 +248,7 @@ public abstract class BaseOsgiHost implements OsgiHost {
                     }
                 }
             } catch (IOException e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to find subpackages of [#0]", e, rootPackage);
-                }
+                LOG.error("Unable to find subpackages of [{}]", rootPackage, e);
             }
         }
 
@@ -287,9 +279,7 @@ public abstract class BaseOsgiHost implements OsgiHost {
                     return getVersionFromString(jarFile.getName());
                 }
             } catch (Exception e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to extract version from [#0], defaulting to '1.0.0'", url.toExternalForm());
-                }
+                LOG.error("Unable to extract version from [{}], defaulting to '1.0.0'", url.toExternalForm());
             }
         }
         return "1.0.0";

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
index f1393ea..259fe2e 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/FelixOsgiHost.java
@@ -73,13 +73,11 @@ public class FelixOsgiHost extends BaseOsgiHost {
         // Bundle cache
         String storageDir = System.getProperty("java.io.tmpdir") + ".felix-cache";
         configProps.setProperty(Constants.FRAMEWORK_STORAGE, storageDir);
-        if (LOG.isDebugEnabled())
-            LOG.debug("Storing bundles at [#0]", storageDir);
+        LOG.debug("Storing bundles at [{}]", storageDir);
 
         String cleanBundleCache = getServletContextParam("struts.osgi.clearBundleCache", "true");
         if ("true".equalsIgnoreCase(cleanBundleCache)) {
-            if (LOG.isDebugEnabled())
-                LOG.debug("Clearing bundle cache");
+            LOG.debug("Clearing bundle cache");
             configProps.put(FelixConstants.FRAMEWORK_STORAGE_CLEAN, FelixConstants.FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT);
         }
 
@@ -95,9 +93,7 @@ public class FelixOsgiHost extends BaseOsgiHost {
             AutoProcessor.process(configProps, felix.getBundleContext());
             felix.start();
 
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Apache Felix is running");
-            }
+            LOG.trace("Apache Felix is running");
         }
         catch (Exception ex) {
             throw new ConfigurationException("Couldn't start Apache Felix", ex);
@@ -144,9 +140,7 @@ public class FelixOsgiHost extends BaseOsgiHost {
     @Override
     public void destroy() throws Exception {
         felix.stop();
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Apache Felix has stopped");
-        }
+        LOG.trace("Apache Felix has stopped");
     }
 
     @Override
@@ -163,11 +157,8 @@ public class FelixOsgiHost extends BaseOsgiHost {
                 LOG.debug("Spring OSGi support is not enabled");
             }
         } catch (Exception e) {
-            if (LOG.isErrorEnabled()) {
-                LOG.error("The API of Spring OSGi has changed and the field [#0] is no longer available. The OSGi plugin needs to be updated", e,
-                        "org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext.BUNDLE_CONTEXT_ATTRIBUTE");
-            }
+            LOG.error("The API of Spring OSGi has changed and the field [{}] is no longer available. The OSGi plugin needs to be updated",
+                        "org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext.BUNDLE_CONTEXT_ATTRIBUTE", e);
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
----------------------------------------------------------------------
diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
index 9744fb0..dfd5e94 100644
--- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
+++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/GlassfishOSGiHost.java
@@ -138,12 +138,9 @@ public class GlassfishOSGiHost extends BaseOsgiHost implements OsgiHost {
                 LOG.debug("Spring OSGi support is not enabled");
             }
         } catch (Exception e) {
-            if (LOG.isErrorEnabled()) {
-                LOG.error(
-                        "The API of Spring OSGi has changed and the field [#0] is no longer available. The OSGi plugin needs to be updated",
-                        e,
-                        "org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext.BUNDLE_CONTEXT_ATTRIBUTE");
-            }
+            LOG.error(
+                        "The API of Spring OSGi has changed and the field [[}] is no longer available. The OSGi plugin needs to be updated",
+                        "org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext.BUNDLE_CONTEXT_ATTRIBUTE", e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
----------------------------------------------------------------------
diff --git a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
index b748fce..fdd8aae 100644
--- a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
+++ b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/DefaultOValValidationManager.java
@@ -158,9 +158,7 @@ public class DefaultOValValidationManager implements OValValidationManager {
                 is = fileManager.loadFile(fileUrl);
 
                 if (is != null) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Loading validation xml file [#0]", fileName);
-                    }
+                    LOG.debug("Loading validation xml file [{}]", fileName);
                     XMLConfigurer configurer = new XMLConfigurer();
                     configurer.fromXML(is);
                     validatorFileCache.put(fileName, configurer);
@@ -171,7 +169,7 @@ public class DefaultOValValidationManager implements OValValidationManager {
                     try {
                         is.close();
                     } catch (java.io.IOException e) {
-                        LOG.error("Unable to close input stream for [#0] ", e, fileName);
+                        LOG.error("Unable to close input stream for [{}] ", fileName, e);
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
index b4d5410..6465020 100644
--- a/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
+++ b/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
@@ -100,7 +100,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
         String context = proxy.getConfig().getName();
 
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Validating [#0/#1] with method [#2]", invocation.getProxy().getNamespace(), invocation.getProxy().getActionName(), methodName);
+            LOG.debug("Validating [{}/{}] with method [{}]", invocation.getProxy().getNamespace(), invocation.getProxy().getActionName(), methodName);
         }
 
         //OVal vallidatio (no XML yet)
@@ -118,9 +118,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
             Exception exception = null;
 
             Validateable validateable = (Validateable) action;
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Invoking validate() on action [#0]", validateable.toString());
-            }
+            LOG.debug("Invoking validate() on action [{}]", validateable);
 
             try {
                 PrefixMethodInvocationUtil.invokePrefixMethod(
@@ -129,9 +127,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
             } catch (Exception e) {
                 // If any exception occurred while doing reflection, we want
                 // validate() to be executed
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("An exception occured while executing the prefix method", e);
-                }
+                LOG.warn("An exception occurred while executing the prefix method", e);
                 exception = e;
             }
 
@@ -160,9 +156,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
                 String[] profileNames = profiles.value();
                 if (profileNames != null && profileNames.length > 0) {
                     validator.disableAllProfiles();
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Enabling profiles [#0]", StringUtils.join(profileNames, ","));
-                    }
+                    LOG.debug("Enabling profiles [{}]", StringUtils.join(profileNames, ","));
                     for (String profileName : profileNames)
                         validator.enableProfile(profileName);
                 }
@@ -194,9 +188,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
                 }
 
                 if (isActionError(violation)) {
-                    if (LOG.isDebugEnabled()) {
-                	LOG.debug("Adding action error '#0'", message);
-                    }
+                	LOG.debug("Adding action error '{}'", message);
                     validatorContext.addActionError(message);
                 } else {
                     ValidationError validationError = buildValidationError(violation, message);
@@ -207,9 +199,7 @@ public class OValValidationInterceptor extends MethodFilterInterceptor {
                     	fieldName = parentFieldname + "." + fieldName;
                     }
 
-                    if (LOG.isDebugEnabled()) {
-                	LOG.debug("Adding field error [#0] with message '#1'", fieldName, validationError.getMessage());
-                    }
+                	LOG.debug("Adding field error [{}] with message '{}'", fieldName, validationError.getMessage());
                     validatorContext.addFieldError(fieldName, validationError.getMessage());
 
                     // don't add "model." prefix to fields of model in model driven action

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
index 0e5402d..9f9b4b8 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
@@ -181,9 +181,7 @@ public class PellMultiPartRequest implements MultiPartRequest {
                 }
                 if ((currentFile != null) && currentFile.isFile()) {
                     if (!currentFile.delete()) {
-                        if (LOG.isWarnEnabled()) {
-                            LOG.warn("Resource Leaking:  Could not remove uploaded file [#0]", currentFile.getAbsolutePath());
-                        }
+                        LOG.warn("Resource Leaking: Could not remove uploaded file [{}]", currentFile.getAbsolutePath());
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
----------------------------------------------------------------------
diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
index b3f9a53..5aa7e79 100644
--- a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
+++ b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
@@ -109,9 +109,7 @@ public class ClassReloadingXMLWebApplicationContext extends XmlWebApplicationCon
                 classLoader.addResourceStore(new JarResourceStore(file));
                 //register with the fam
                 fam.addListener(file, this);
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Watching [#0] for changes", file.getAbsolutePath());
-                }
+                LOG.debug("Watching [{}] for changes", file.getAbsolutePath());
             } else {
                 //get all subdirs
                 List<File> dirs = new ArrayList<File>();
@@ -122,9 +120,7 @@ public class ClassReloadingXMLWebApplicationContext extends XmlWebApplicationCon
                 for (File dir : dirs) {
                     //register with the fam
                     fam.addListener(dir, this);
-                    if (LOG.isDebugEnabled()) {
-                	LOG.debug("Watching [#0] for changes", dir.getAbsolutePath());
-                    }
+                	LOG.debug("Watching [{}] for changes", dir.getAbsolutePath());
                 }
             }
         }
@@ -206,12 +202,10 @@ public class ClassReloadingXMLWebApplicationContext extends XmlWebApplicationCon
     private void reload(File file) {
         if (classLoader != null) {
             final boolean debugEnabled = LOG.isDebugEnabled();
-            if (debugEnabled)
-                LOG.debug("Change detected in file [#0], reloading class loader", file.getAbsolutePath());
+            LOG.debug("Change detected in file [{}], reloading class loader", file.getAbsolutePath());
             classLoader.reload();
             if (reloadConfig && Dispatcher.getInstance() != null) {
-                if (debugEnabled)
-                    LOG.debug("Change detected in file [#0], reloading configuration", file.getAbsolutePath());
+                LOG.debug("Change detected in file [{}], reloading configuration", file.getAbsolutePath());
                 Dispatcher.getInstance().getConfigurationManager().reload();
             }
         }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
index 917a376..1f7cfc4 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
@@ -198,9 +198,7 @@ public class DefaultActionInvocation implements ActionInvocation {
         try {
             resultConfig = results.get(resultCode);
         } catch (NullPointerException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Got NPE trying to read result configuration for resultCode [#0]", resultCode);
-            }
+            LOG.debug("Got NPE trying to read result configuration for resultCode [{}]", resultCode);
         }
         
         if (resultConfig == null) {
@@ -212,9 +210,7 @@ public class DefaultActionInvocation implements ActionInvocation {
             try {
                 return objectFactory.buildResult(resultConfig, invocationContext.getContextMap());
             } catch (Exception e) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("There was an exception while instantiating the result of type #0", e, resultConfig.getClassName());
-                }
+                LOG.error("There was an exception while instantiating the result of type {}", resultConfig.getClassName(), e);
                 throw new XWorkException(e, resultConfig);
             }
         } else if (resultCode != null && !Action.NONE.equals(resultCode) && unknownHandlerManager.hasUnknownHandlers()) {
@@ -409,9 +405,7 @@ public class DefaultActionInvocation implements ActionInvocation {
     protected String invokeAction(Object action, ActionConfig actionConfig) throws Exception {
         String methodName = proxy.getMethod();
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Executing action method = #0", methodName);
-        }
+        LOG.debug("Executing action method = {}", methodName);
 
         String timerKey = "invokeAction: " + proxy.getActionName();
         try {

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
index e66d269..544fbf3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
@@ -76,9 +76,7 @@ public class DefaultActionProxy implements ActionProxy, Serializable {
 
         this.invocation = inv;
         this.cleanupContext = cleanupContext;
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Creating an DefaultActionProxy for namespace [#0] and action name [#1]", namespace, actionName);
-        }
+        LOG.debug("Creating an DefaultActionProxy for namespace [{}] and action name [{}]", namespace, actionName);
 
         this.actionName = StringEscapeUtils.escapeHtml4(actionName);
         this.namespace = namespace;

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
index d853322..a850f79 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
@@ -149,9 +149,7 @@ public class ConfigurationManager {
         try {
             containerProvider.destroy();
         } catch (Exception e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Error while destroying container provider [#0]", e, containerProvider.toString());
-            }
+            LOG.warn("Error while destroying container provider [{}]", containerProvider.toString(), e);
         }
     }
 
@@ -172,9 +170,7 @@ public class ConfigurationManager {
      */
     public synchronized void conditionalReload() {
         if (reloadConfigs || providersChanged) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Checking ConfigurationProviders for reload.");
-            }
+            LOG.debug("Checking ConfigurationProviders for reload.");
             List<ContainerProvider> providers = getContainerProviders();
             boolean reload = needReloadContainerProviders(providers);
             if (!reload) {
@@ -191,7 +187,7 @@ public class ConfigurationManager {
     private void updateReloadConfigsFlag() {
         reloadConfigs = Boolean.parseBoolean(configuration.getContainer().getInstance(String.class, XWorkConstants.RELOAD_XML_CONFIGURATION));
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Updating [#0], current value is [#1], new value [#2]",
+            LOG.debug("Updating [{}], current value is [{}], new value [{}]",
                     XWorkConstants.RELOAD_XML_CONFIGURATION, String.valueOf(reloadConfigs), String.valueOf(reloadConfigs));
         }
     }
@@ -200,9 +196,7 @@ public class ConfigurationManager {
         if (packageProviders != null) {
             for (PackageProvider provider : packageProviders) {
                 if (provider.needsReload()) {
-                    if (LOG.isInfoEnabled()) {
-                        LOG.info("Detected package provider [#0] needs to be reloaded. Reloading all providers.", provider.toString());
-                    }
+                    LOG.info("Detected package provider [{}] needs to be reloaded. Reloading all providers.", provider);
                     return true;
                 }
             }
@@ -213,9 +207,7 @@ public class ConfigurationManager {
     private boolean needReloadContainerProviders(List<ContainerProvider> providers) {
         for (ContainerProvider provider : providers) {
             if (provider.needsReload()) {
-                if (LOG.isInfoEnabled()) {
-                    LOG.info("Detected container provider [#0] needs to be reloaded. Reloading all providers.", provider.toString());
-                }
+                LOG.info("Detected container provider [{}] needs to be reloaded. Reloading all providers.", provider);
                 return true;
             }
         }
@@ -227,9 +219,7 @@ public class ConfigurationManager {
             try {
                 containerProvider.destroy();
             } catch (Exception e) {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("error while destroying configuration provider [#0]", e, containerProvider.toString());
-                }
+                LOG.warn("error while destroying configuration provider [{}]", containerProvider, e);
             }
         }
         packageProviders = this.configuration.reloadContainer(providers);

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
index f60f7d8..5c3e360 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
@@ -70,11 +70,9 @@ public class InterceptorBuilder {
                     inter = objectFactory.buildInterceptor(config, refParams);
                     result.add(new InterceptorMapping(refName, inter));
                 } catch (ConfigurationException ex) {
-                    if (LOG.isWarnEnabled()) {
-                	    LOG.warn("Unable to load config class #0 at #1 probably due to a missing jar, which might be fine if you never plan to use the #2 interceptor",
-                            config.getClassName(), ex.getLocation().toString(), config.getName());
-                    }
-                    LOG.error("Actual exception", ex);
+              	    LOG.warn("Unable to load config class {} at {} probably due to a missing jar, which might be fine if you never plan to use the {} interceptor",
+                            config.getClassName(), ex.getLocation(), config.getName());
+                    LOG.error("Unable to load config class {}", config.getClassName(), ex);
                 }
 
             } else if (referencedConfig instanceof InterceptorStackConfig) {
@@ -87,7 +85,7 @@ public class InterceptorBuilder {
                 }
 
             } else {
-                LOG.error("Got unexpected type for interceptor " + refName + ". Got " + referencedConfig);
+                LOG.error("Got unexpected type for interceptor {}. Got {}", refName, referencedConfig);
             }
         }
 
@@ -148,9 +146,7 @@ public class InterceptorBuilder {
                 params.put(name, map);
 
             } catch (Exception e) {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("No interceptor found for name = #0", key);
-                }
+                LOG.warn("No interceptor found for name = {}", key);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
index 4f6f5ab..fe84e09 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
@@ -246,9 +246,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
                             if (!optional) {
                                 throw new ConfigurationException("Unable to load bean: type:" + type + " class:" + impl, ex, childNode);
                             } else {
-                                if (LOG.isDebugEnabled()) {
-                                    LOG.debug("Unable to load optional class: #0", impl);
-                                }
+                                LOG.debug("Unable to load optional class: {}", impl);
                             }
                         }
                     } else if ("constant".equals(nodeName)) {
@@ -427,9 +425,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
 
         } else {
             if (!verifyAction(className, name, location)) {
-                if (LOG.isErrorEnabled()) {
-                    LOG.error("Unable to verify action [#0] with class [#1], from [#2]", name, className, location);
-                }
+                LOG.error("Unable to verify action [{}] with class [{}], from [{}]", name, className, location);
                 return;
             }
         }
@@ -465,10 +461,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
 
     protected boolean verifyAction(String className, String name, Location loc) {
         if (className.indexOf('{') > -1) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Action class [" + className + "] contains a wildcard " +
-                        "replacement value, so it can't be verified");
-            }
+            LOG.debug("Action class [{}] contains a wildcard replacement value, so it can't be verified", className);
             return true;
         }
         try {
@@ -480,28 +473,18 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
                 clazz.getConstructor(new Class[]{});
             }
         } catch (ClassNotFoundException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Class not found for action [#0]", e, className);
-            }
+            LOG.debug("Class not found for action [{}]", className, e);
             throw new ConfigurationException("Action class [" + className + "] not found", loc);
         } catch (NoSuchMethodException e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("No constructor found for action [#0]", e, className);
-            }
+            LOG.debug("No constructor found for action [{}]", className, e);
             throw new ConfigurationException("Action class [" + className + "] does not have a public no-arg constructor", e, loc);
         } catch (RuntimeException ex) {
             // Probably not a big deal, like request or session-scoped Spring 2 beans that need a real request
-            if (LOG.isInfoEnabled()) {
-                LOG.info("Unable to verify action class [#0] exists at initialization", className);
-            }
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Action verification cause", ex);
-            }
+            LOG.info("Unable to verify action class [{}] exists at initialization", className);
+            LOG.debug("Action verification cause", ex);
         } catch (Exception ex) {
             // Default to failing fast
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Unable to verify action class [#0]", ex, className);
-            }
+            LOG.debug("Unable to verify action class [{}]", className, ex);
             throw new ConfigurationException(ex, loc);
         }
         return true;
@@ -514,9 +497,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
         String packageName = packageElement.getAttribute("name");
         PackageConfig packageConfig = configuration.getPackageConfig(packageName);
         if (packageConfig != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Package [#0] already loaded, skipping re-loading it and using existing PackageConfig [#1]", packageName, packageConfig);
-            }
+            LOG.debug("Package [{}] already loaded, skipping re-loading it and using existing PackageConfig [{}]", packageName, packageConfig);
             return packageConfig;
         }
 
@@ -526,9 +507,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
             return newPackage.build();
         }
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Loaded " + newPackage);
-        }
+        LOG.debug("Loaded {}", newPackage);
 
         // add result types (and default result) to this package
         addResultTypes(newPackage, packageElement);
@@ -581,9 +560,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
                 try {
                     paramName = (String) clazz.getField("DEFAULT_PARAM").get(null);
                 } catch (Throwable t) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("The result type [#0] doesn't have a default param [DEFAULT_PARAM] defined!", t, className);
-                    }
+                    LOG.debug("The result type [{}] doesn't have a default param [DEFAULT_PARAM] defined!", className, t);
                 }
                 ResultTypeConfig.Builder resultType = new ResultTypeConfig.Builder(name, className).defaultResultParam(paramName)
                         .location(DomHelper.getLocationObject(resultTypeElement));
@@ -607,13 +584,9 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
         try {
             return objectFactory.getClassInstance(className);
         } catch (ClassNotFoundException e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Result class [#0] doesn't exist (ClassNotFoundException) at #1, ignoring", e, className, loc.toString());
-            }
+            LOG.warn("Result class [{}] doesn't exist (ClassNotFoundException) at {}, ignoring", className, loc, e);
         } catch (NoClassDefFoundError e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Result class [#0] doesn't exist (NoClassDefFoundError) at #1, ignoring", e, className, loc.toString());
-            }
+            LOG.warn("Result class [{}] doesn't exist (NoClassDefFoundError) at {}, ignoring", className, loc, e);
         }
 
         return null;
@@ -758,9 +731,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
                                 resultParams.put(paramName, val);
                             }
                         } else {
-                            if (LOG.isWarnEnabled()) {
-                                LOG.warn("No default parameter defined for result [#0] of type [#1] ", config.getName(), config.getClassName());
-                            }
+                            LOG.warn("No default parameter defined for result [{}] of type [{}] ", config.getName(), config.getClassName());
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
index d22cf54..2f64dbc 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
@@ -35,7 +35,7 @@ public class DefaultConversionAnnotationProcessor implements ConversionAnnotatio
 
     public void process(Map<String, Object> mapping, TypeConversion tc, String key) {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("TypeConversion [#0] with key: [#1]", tc.converter(), key);
+            LOG.debug("TypeConversion [{}] with key: [{}]", tc.converter(), key);
         }
         if (key == null) {
             return;
@@ -54,9 +54,7 @@ public class DefaultConversionAnnotationProcessor implements ConversionAnnotatio
                 //for keys of Maps
                 else if (tc.rule() == ConversionRule.KEY) {
                     Class converterClass = Thread.currentThread().getContextClassLoader().loadClass(tc.converter());
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Converter class: [#0]", converterClass);
-                    }
+                    LOG.debug("Converter class: [{}]", converterClass);
                     //check if the converter is a type converter if it is one
                     //then just put it in the map as is. Otherwise
                     //put a value in for the type converter of the class
@@ -65,7 +63,7 @@ public class DefaultConversionAnnotationProcessor implements ConversionAnnotatio
                     } else {
                         mapping.put(key, converterClass);
                         if (LOG.isDebugEnabled()) {
-                            LOG.debug("Object placed in mapping for key [#0] is [#1]", key, mapping.get(key));
+                            LOG.debug("Object placed in mapping for key [{}] is [{}]", key, mapping.get(key));
                         }
                     }
                 }
@@ -75,9 +73,7 @@ public class DefaultConversionAnnotationProcessor implements ConversionAnnotatio
                 }
             }
         } catch (Exception e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Got exception for #0", e, key);
-            }
+            LOG.debug("Got exception for {}", key, e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
index 7fb36d3..5fd0d07 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
@@ -40,7 +40,7 @@ public class DefaultConversionFileProcessor implements ConversionFileProcessor {
 
             if (is != null) {
                 if (LOG.isDebugEnabled()) {
-                    LOG.debug("Processing conversion file [#0] for class [#1]", converterFilename, clazz);
+                    LOG.debug("Processing conversion file [{}] for class [{}]", converterFilename, clazz);
                 }
 
                 Properties prop = new Properties();
@@ -55,9 +55,7 @@ public class DefaultConversionFileProcessor implements ConversionFileProcessor {
                     // for keyProperty of Set
                     if (key.startsWith(DefaultObjectTypeDeterminer.KEY_PROPERTY_PREFIX)
                             || key.startsWith(DefaultObjectTypeDeterminer.CREATE_IF_NULL_PREFIX)) {
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("\t" + key + ":" + entry.getValue() + "[treated as String]");
-                        }
+                        LOG.debug("\t{}:{} [treated as String]", key, entry.getValue());
                         mapping.put(key, entry.getValue());
                     }
                     //for properties of classes
@@ -66,9 +64,7 @@ public class DefaultConversionFileProcessor implements ConversionFileProcessor {
                             key.startsWith(DefaultObjectTypeDeterminer.DEPRECATED_ELEMENT_PREFIX))
                             ) {
                         TypeConverter _typeConverter = converterCreator.createTypeConverter((String) entry.getValue());
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("\t" + key + ":" + entry.getValue() + "[treated as TypeConverter " + _typeConverter + "]");
-                        }
+                        LOG.debug("\t{}:{} [treated as TypeConverter {}]", key, entry.getValue(), _typeConverter);
                         mapping.put(key, _typeConverter);
                     }
                     //for keys of Maps
@@ -81,31 +77,23 @@ public class DefaultConversionFileProcessor implements ConversionFileProcessor {
                         //put a value in for the type converter of the class
                         if (converterClass.isAssignableFrom(TypeConverter.class)) {
                             TypeConverter _typeConverter = converterCreator.createTypeConverter((String) entry.getValue());
-                            if (LOG.isDebugEnabled()) {
-                                LOG.debug("\t" + key + ":" + entry.getValue() + "[treated as TypeConverter " + _typeConverter + "]");
-                            }
+                            LOG.debug("\t{}:{} [treated as TypeConverter {}]", key, entry.getValue(), _typeConverter);
                             mapping.put(key, _typeConverter);
                         } else {
-                            if (LOG.isDebugEnabled()) {
-                                LOG.debug("\t" + key + ":" + entry.getValue() + "[treated as Class " + converterClass + "]");
-                            }
+                            LOG.debug("\t{}:{} [treated as Class {}]", key, entry.getValue(), converterClass);
                             mapping.put(key, converterClass);
                         }
                     }
                     //elements(values) of maps / lists
                     else {
                         Class _c = Thread.currentThread().getContextClassLoader().loadClass((String) entry.getValue());
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("\t" + key + ":" + entry.getValue() + "[treated as Class " + _c + "]");
-                        }
+                        LOG.debug("\t{}:{} [treated as Class {}]", key, entry.getValue(), _c);
                         mapping.put(key, _c);
                     }
                 }
             }
         } catch (Exception ex) {
-            if (LOG.isErrorEnabled()) {
-                LOG.error("Problem loading properties for #0", ex, clazz.getName());
-            }
+            LOG.error("Problem loading properties for {}", clazz.getName(), ex);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
index d251877..762496f 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
@@ -52,9 +52,7 @@ public class DefaultConversionPropertiesProcessor implements ConversionPropertie
                 Properties props = new Properties();
                 props.load(url.openStream());
 
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("processing conversion file [" + propsName + "]");
-                }
+                LOG.debug("Processing conversion file [{}]", propsName);
 
                 for (Object o : props.entrySet()) {
                     Map.Entry entry = (Map.Entry) o;
@@ -63,7 +61,7 @@ public class DefaultConversionPropertiesProcessor implements ConversionPropertie
                     try {
                         TypeConverter _typeConverter = converterCreator.createTypeConverter((String) entry.getValue());
                         if (LOG.isDebugEnabled()) {
-                            LOG.debug("\t" + key + ":" + entry.getValue() + " [treated as TypeConverter " + _typeConverter + "]");
+                            LOG.debug("\t{}:{} [treated as TypeConverter {}]", key, entry.getValue(), _typeConverter);
                         }
                         converterHolder.addDefaultMapping(key, _typeConverter);
                     } catch (Exception e) {
@@ -75,9 +73,7 @@ public class DefaultConversionPropertiesProcessor implements ConversionPropertie
             if (require) {
                 throw new XWorkException("Cannot load conversion properties file: "+propsName, ex);
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Cannot load conversion properties file: #0", ex, propsName);
-                }
+                LOG.debug("Cannot load conversion properties file: {}", propsName, ex);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/8e877115/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
index 36c4613..3df9f94 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
@@ -299,9 +299,7 @@ public class DefaultObjectTypeDeterminer implements ObjectTypeDeterminer {
                 return (Class) resultType;
             }
         } catch (Exception e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Error while retrieving generic property class for property = #0", e, property);
-            }
+            LOG.debug("Error while retrieving generic property class for property: {}", property, e);
         }
         return null;
     }


[14/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Use log4j2 in xwork tests


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

Branch: refs/heads/master
Commit: fe58d73f7a76b490df341fb91f95bb2f349b0adb
Parents: 40fdd16
Author: Johannes Geppert <jo...@gmail.com>
Authored: Tue May 26 19:10:57 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Tue May 26 19:10:57 2015 +0200

----------------------------------------------------------------------
 xwork-core/pom.xml                             |  7 +++++++
 xwork-core/src/test/resources/log4j.properties |  6 ------
 xwork-core/src/test/resources/log4j2.xml       | 13 +++++++++++++
 3 files changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/fe58d73f/xwork-core/pom.xml
----------------------------------------------------------------------
diff --git a/xwork-core/pom.xml b/xwork-core/pom.xml
index 5bbe611..fca1912 100644
--- a/xwork-core/pom.xml
+++ b/xwork-core/pom.xml
@@ -208,6 +208,13 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+            <scope>test</scope>
+        </dependency>
+
         <!-- SLF4J support -->
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/struts/blob/fe58d73f/xwork-core/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/resources/log4j.properties b/xwork-core/src/test/resources/log4j.properties
deleted file mode 100644
index cd27a6c..0000000
--- a/xwork-core/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-log4j.rootLogger = INFO, stdout
-
-log4j.appender.stdout = org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target   = System.out
-log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n

http://git-wip-us.apache.org/repos/asf/struts/blob/fe58d73f/xwork-core/src/test/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/resources/log4j2.xml b/xwork-core/src/test/resources/log4j2.xml
new file mode 100644
index 0000000..263585e
--- /dev/null
+++ b/xwork-core/src/test/resources/log4j2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file


[11/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Use log4j2 in all archetypes


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

Branch: refs/heads/master
Commit: 93a307b95ea11dcebbd20e6ed205fb2384c17105
Parents: 88649ff
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 21:47:03 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 21:47:03 2015 +0200

----------------------------------------------------------------------
 .../main/resources/archetype-resources/pom.xml  |  5 -----
 .../main/resources/archetype-resources/pom.xml  |  6 ------
 .../main/resources/archetype-resources/pom.xml  |  5 -----
 .../main/resources/archetype-resources/pom.xml  |  6 ++++++
 .../src/main/resources/log4j2.xml               | 16 ++++++++++++++++
 .../main/resources/archetype-resources/pom.xml  | 13 ++++---------
 .../src/main/resources/log4j.properties         | 20 --------------------
 .../src/main/resources/log4j2.xml               | 17 +++++++++++++++++
 8 files changed, 43 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml b/archetypes/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
index b008115..ff31ad8 100644
--- a/archetypes/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
@@ -49,11 +49,6 @@
 
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>\${log4j2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
             <version>\${log4j2.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml b/archetypes/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
index 87883a7..e6f625c 100644
--- a/archetypes/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
@@ -35,12 +35,6 @@
             <scope>test</scope>
         </dependency>
 
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>\${log4j2.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml b/archetypes/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
index ebfb0de..5844509 100644
--- a/archetypes/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
@@ -43,11 +43,6 @@
 
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>\${log4j2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
             <version>\${log4j2.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/pom.xml b/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/pom.xml
index c254752..62a0e8f 100644
--- a/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/pom.xml
@@ -92,6 +92,12 @@
             <scope>provided</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>\${log4j2.version}</version>
+        </dependency>
+
     </dependencies>
     	
     <build>

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/src/main/resources/log4j2.xml b/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..6d27d12
--- /dev/null
+++ b/archetypes/struts2-archetype-dbportlet/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Logger name="\${groupId}" level="debug"/>
+        <Root level="warn">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml b/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
index 007a2d6..6ab6329 100644
--- a/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
@@ -70,16 +70,11 @@
 			<version>1.3</version>
 		</dependency>
 
+        <!-- Logging -->
         <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.1.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>\${log4j2.version}</version>
         </dependency>
 
 		<!-- Dwr -->

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j.properties b/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j.properties
deleted file mode 100644
index cfd02d8..0000000
--- a/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-
-log4j.rootLogger = DEBUG, stdout
-
-
-log4j.category.com.opensymphony.sitemesh=DEBUG
-log4j.category.org.apache.struts2=INFO
-log4j.category.org.apache=INFO
-log4j.category.catalia=INFO
-
-
-
-
-log4j.appender.stdout = org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Threshold = DEBUG
-log4j.appender.stdout.Target   = System.out
-log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n
-
-
-

http://git-wip-us.apache.org/repos/asf/struts/blob/93a307b9/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml b/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..d0cdc6d
--- /dev/null
+++ b/archetypes/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.sitemesh" level="info"/>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Logger name="\${groupId}" level="debug"/>
+        <Root level="warn">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file


[06/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

- Use log4j2 Logger and LogManager instead of xwork implementation everywhere


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

Branch: refs/heads/master
Commit: 95805e54f79a3c0f63325694c4a2a8a47d7330fd
Parents: 340312e
Author: Johannes Geppert <jo...@gmail.com>
Authored: Mon May 25 12:42:19 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Mon May 25 12:42:23 2015 +0200

----------------------------------------------------------------------
 .../src/test/java/example/HelloWorldTest.java   |  3 +--
 .../java/mailreader2/ApplicationListener.java   | 16 +++++---------
 .../mailreader2/AuthenticationInterceptor.java  |  7 ++++---
 .../src/main/java/mailreader2/Login.java        |  2 +-
 .../java/mailreader2/MailreaderSupport.java     | 11 +++++-----
 .../chat/ChatAuthenticationInterceptor.java     |  6 +++---
 .../struts2/showcase/chat/ChatInterceptor.java  |  6 +++---
 .../showcase/chat/ChatSessionListener.java      |  6 +++---
 .../struts2/showcase/chat/DateConverter.java    |  6 +++---
 .../main/java/actions/osgi/BundlesAction.java   | 12 ++++-------
 .../java/actions/osgi/HelloWorldAction.java     |  5 -----
 .../META-INF/spring/applicationContext.xml      |  5 +----
 core/pom.xml                                    | 13 ++++++------
 .../java/org/apache/struts2/RequestUtils.java   |  6 +++---
 .../apache/struts2/ServletActionContext.java    | 10 ++++-----
 .../struts2/components/ActionComponent.java     |  6 +++---
 .../org/apache/struts2/components/Anchor.java   |  6 +++---
 .../struts2/components/AppendIterator.java      |  6 +++---
 .../org/apache/struts2/components/Bean.java     |  6 +++---
 .../struts2/components/ClosingUIBean.java       |  6 +++---
 .../apache/struts2/components/Component.java    |  6 +++---
 .../org/apache/struts2/components/Date.java     |  6 +++---
 .../org/apache/struts2/components/File.java     |  6 +++---
 .../org/apache/struts2/components/I18n.java     |  6 +++---
 .../org/apache/struts2/components/Include.java  |  6 +++---
 .../struts2/components/InputTransferSelect.java |  6 +++---
 .../struts2/components/IteratorComponent.java   |  6 +++---
 .../struts2/components/MergeIterator.java       |  6 +++---
 .../org/apache/struts2/components/Number.java   |  6 +++---
 .../org/apache/struts2/components/OptGroup.java |  6 +++---
 .../components/OptionTransferSelect.java        |  6 +++---
 .../org/apache/struts2/components/Property.java |  6 +++---
 .../struts2/components/ServletUrlRenderer.java  |  6 +++---
 .../org/apache/struts2/components/Submit.java   |  6 +++---
 .../org/apache/struts2/components/Text.java     |  6 +++---
 .../org/apache/struts2/components/UIBean.java   |  6 +++---
 .../java/org/apache/struts2/components/URL.java |  6 +++---
 .../apache/struts2/components/UpDownSelect.java |  6 +++---
 .../components/template/BaseTemplateEngine.java |  6 +++---
 .../template/FreemarkerTemplateEngine.java      |  6 +++---
 .../components/template/JspTemplateEngine.java  |  6 +++---
 .../template/VelocityTemplateEngine.java        |  6 +++---
 .../config/AbstractBeanSelectionProvider.java   |  6 +++---
 .../config/DefaultBeanSelectionProvider.java    |  6 +++---
 .../apache/struts2/config/DefaultSettings.java  |  6 +++---
 .../struts2/config/PropertiesSettings.java      |  6 +++---
 .../config/StrutsXmlConfigurationProvider.java  |  6 +++---
 .../dispatcher/ActionContextCleanUp.java        |  6 +++---
 .../DefaultDispatcherErrorHandler.java          |  6 +++---
 .../dispatcher/DefaultStaticContentLoader.java  |  6 +++---
 .../apache/struts2/dispatcher/Dispatcher.java   |  6 +++---
 .../struts2/dispatcher/FilterDispatcher.java    |  6 ++++--
 .../FilterDispatcherCompatWeblogic61.java       |  6 +++---
 .../struts2/dispatcher/HttpHeaderResult.java    |  6 +++---
 .../struts2/dispatcher/PlainTextResult.java     |  6 +++---
 .../dispatcher/ServletDispatcherResult.java     |  6 +++---
 .../dispatcher/ServletRedirectResult.java       |  6 +++---
 .../apache/struts2/dispatcher/StreamResult.java |  6 +++---
 .../struts2/dispatcher/StrutsResultSupport.java |  6 +++---
 .../struts2/dispatcher/VelocityResult.java      |  6 +++---
 .../mapper/CompositeActionMapper.java           |  6 +++---
 .../dispatcher/mapper/DefaultActionMapper.java  |  6 +++---
 .../mapper/PrefixBasedActionMapper.java         |  6 +++---
 .../dispatcher/mapper/Restful2ActionMapper.java |  6 +++---
 .../dispatcher/mapper/RestfulActionMapper.java  |  6 +++---
 .../multipart/JakartaMultiPartRequest.java      |  6 +++---
 .../JakartaStreamMultiPartRequest.java          |  6 +++---
 .../multipart/MultiPartRequestWrapper.java      |  6 +++---
 .../struts2/dispatcher/ng/InitOperations.java   |  2 ++
 .../dispatcher/ng/PrepareOperations.java        |  8 +++----
 .../impl/PrefixBasedActionProxyFactory.java     |  6 +++---
 .../interceptor/CheckboxInterceptor.java        |  6 +++---
 .../interceptor/ClearSessionInterceptor.java    |  6 +++---
 .../struts2/interceptor/CookieInterceptor.java  |  6 +++---
 .../interceptor/CookieProviderInterceptor.java  |  6 +++---
 .../interceptor/CreateSessionInterceptor.java   |  6 +++---
 .../interceptor/DateTextFieldInterceptor.java   |  6 +++---
 .../interceptor/DeprecationInterceptor.java     |  6 +++---
 .../interceptor/ExecuteAndWaitInterceptor.java  |  6 +++---
 .../interceptor/FileUploadInterceptor.java      |  6 +++---
 .../interceptor/MessageStoreInterceptor.java    |  6 +++---
 .../struts2/interceptor/RolesInterceptor.java   |  6 +++---
 .../struts2/interceptor/ScopeInterceptor.java   |  6 +++---
 .../debugging/DebuggingInterceptor.java         |  6 +++---
 .../apache/struts2/util/IteratorGenerator.java  |  6 +++---
 .../apache/struts2/util/SortIteratorFilter.java |  6 +++---
 .../org/apache/struts2/util/StrutsUtil.java     |  6 +++---
 .../struts2/util/SubsetIteratorFilter.java      |  8 +++----
 .../apache/struts2/util/TextProviderHelper.java |  6 +++---
 .../org/apache/struts2/util/TokenHelper.java    |  6 +++---
 .../struts2/util/fs/JBossFileManager.java       |  6 +++---
 .../views/freemarker/FreemarkerManager.java     |  6 +++---
 .../views/freemarker/FreemarkerResult.java      |  6 +++---
 .../struts2/views/freemarker/tags/TagModel.java |  6 +++---
 .../org/apache/struts2/views/jsp/BeanTag.java   |  6 +++---
 .../jsp/iterator/IteratorGeneratorTag.java      |  6 +++---
 .../views/jsp/iterator/SubsetIteratorTag.java   |  6 +++---
 .../views/jsp/ui/AbstractUITagBeanInfo.java     |  6 +++---
 .../struts2/views/util/DefaultUrlHelper.java    |  6 +++---
 .../struts2/views/velocity/VelocityManager.java |  6 +++---
 .../struts2/views/xslt/AbstractAdapterNode.java | 10 ++++-----
 .../apache/struts2/views/xslt/ArrayAdapter.java |  6 +++---
 .../apache/struts2/views/xslt/BeanAdapter.java  |  6 +++---
 .../struts2/views/xslt/CollectionAdapter.java   |  6 +++---
 .../struts2/views/xslt/ProxyElementAdapter.java |  6 +++---
 .../struts2/views/xslt/ProxyNodeAdapter.java    |  6 +++---
 .../struts2/views/xslt/ServletURIResolver.java  |  6 +++---
 .../struts2/views/xslt/SimpleNodeList.java      |  6 +++---
 .../struts2/views/xslt/StringAdapter.java       |  6 +++---
 .../apache/struts2/views/xslt/XSLTResult.java   |  6 +++---
 .../apache/struts2/ClassInstantiationTest.java  |  2 --
 .../struts2/ExecutionCountTestAction.java       |  6 +++---
 .../struts2/ServletActionContextTest.java       | 14 ++++++-------
 .../apache/struts2/StrutsInternalTestCase.java  |  7 +------
 .../java/org/apache/struts2/TestAction.java     |  6 +-----
 .../struts2/TestConfigurationProvider.java      |  4 ++--
 .../java/org/apache/struts2/TestResult.java     | 15 +++++++------
 .../struts2/views/jsp/AbstractUITagTest.java    |  6 +++---
 .../apache/struts2/cdi/CdiObjectFactory.java    |  6 +++---
 .../config_browser/ShowConfigAction.java        |  6 +++---
 .../config_browser/ShowValidatorAction.java     |  6 +++---
 .../convention/ConventionUnknownHandler.java    |  6 +++---
 .../DefaultInterceptorMapBuilder.java           |  8 +++----
 .../convention/DefaultResultMapBuilder.java     |  6 +++---
 .../PackageBasedActionConfigBuilder.java        |  6 +++---
 .../convention/SEOActionNameBuilder.java        |  6 +++---
 .../apache/struts2/validators/DWRValidator.java |  6 +++---
 .../main/java/org/apache/struts2/JSPLoader.java |  6 +++---
 .../jasperreports/JasperReportsResult.java      |  6 +++---
 .../jasperreports/ValueStackDataSource.java     |  6 +++---
 .../struts2/convention/Java8ClassFinder.java    |  6 +++---
 .../convention/Java8ClassFinderFactory.java     |  6 +++---
 .../views/java/DefaultTagHandlerFactory.java    |  6 +++---
 .../apache/struts2/views/java/DefaultTheme.java |  6 +++---
 .../struts2/views/java/JavaTemplateEngine.java  |  6 +++---
 .../apache/struts2/dispatcher/ChartResult.java  |  6 +++---
 .../org/apache/struts2/json/JSONCleaner.java    |  6 +++---
 .../apache/struts2/json/JSONInterceptor.java    |  6 +++---
 .../org/apache/struts2/json/JSONPopulator.java  |  6 +++---
 .../org/apache/struts2/json/JSONResult.java     |  6 +++---
 .../java/org/apache/struts2/json/JSONUtil.java  |  6 +++---
 .../struts2/json/JSONValidationInterceptor.java |  6 +++---
 .../org/apache/struts2/json/JSONWriter.java     |  6 +++---
 .../org/apache/struts2/json/rpc/RPCError.java   |  6 +++---
 .../apache/struts2/json/smd/SMDGenerator.java   |  6 +++---
 .../apache/struts2/StrutsJUnit4TestCase.java    |  1 +
 .../java/org/apache/struts2/StrutsTestCase.java |  1 +
 .../junit/src/test/java/actions/ViewAction.java |  2 --
 .../struts2/osgi/BundleFreemarkerManager.java   |  6 +++---
 .../struts2/osgi/BundlePackageLoader.java       |  6 +++---
 .../struts2/osgi/DefaultBundleAccessor.java     |  6 +++---
 .../struts2/osgi/OsgiConfigurationProvider.java |  6 +++---
 .../java/org/apache/struts2/osgi/OsgiUtil.java  |  6 +++---
 .../apache/struts2/osgi/StrutsOsgiListener.java |  6 +++---
 .../apache/struts2/osgi/host/BaseOsgiHost.java  |  6 +++---
 .../apache/struts2/osgi/host/FelixOsgiHost.java |  6 +++---
 .../struts2/osgi/host/GlassfishOSGiHost.java    |  6 +++---
 .../osgi/interceptor/OsgiInterceptor.java       |  6 +++---
 .../DefaultOValValidationManager.java           |  6 +++---
 .../interceptor/OValValidationInterceptor.java  |  6 +++---
 .../multipart/PellMultiPartRequest.java         |  6 +++---
 .../org/apache/struts2/plexus/PlexusFilter.java |  6 +++---
 .../struts2/plexus/PlexusLifecycleListener.java |  6 +++---
 .../struts2/plexus/PlexusObjectFactory.java     |  6 +++---
 .../org/apache/struts2/plexus/PlexusUtils.java  |  6 +++---
 .../apache/struts2/StrutsPortletTestCase.java   |  6 +++---
 .../portlet/dispatcher/Jsr168Dispatcher.java    |  6 +++---
 .../portlet/dispatcher/Jsr286Dispatcher.java    |  6 +++---
 .../interceptor/PortletAwareInterceptor.java    |  6 +++---
 .../interceptor/PortletStateInterceptor.java    |  6 +++---
 .../struts2/portlet/result/PortletResult.java   |  6 +++---
 .../portlet/result/PortletVelocityResult.java   |  6 +++---
 .../servlet/PortletServletResponseJSR286.java   |  6 +++---
 .../struts2/portlet/util/PortletUrlHelper.java  |  6 +++---
 .../portlet/util/PortletUrlHelperJSR286.java    |  6 +++---
 .../struts2/rest/RestActionInvocation.java      |  6 +++---
 .../apache/struts2/rest/RestActionMapper.java   |  6 +++---
 .../struts2/rest/RestWorkflowInterceptor.java   |  6 +++---
 .../org/apache/struts2/sitegraph/SiteGraph.java |  6 +++---
 .../sitegraph/StrutsConfigRetriever.java        |  6 +++---
 .../sitegraph/entities/FileBasedView.java       |  6 +++---
 .../sitemesh/FreemarkerDecoratorServlet.java    | 22 ++++----------------
 ...dDecorator2NewStrutsFreemarkerDecorator.java |  6 +++---
 ...OldDecorator2NewStrutsVelocityDecorator.java |  6 +++---
 .../struts2/sitemesh/StrutsSiteMeshFactory.java |  6 +++---
 .../ClassReloadingXMLWebApplicationContext.java |  6 +++---
 .../spring/StrutsSpringObjectFactory.java       |  6 +++---
 .../struts2/tiles/StrutsTilesListener.java      |  6 +++---
 .../tiles/StrutsTilesRequestContext.java        |  6 +++---
 .../opensymphony/xwork2/ActionChainResult.java  |  6 +++---
 .../com/opensymphony/xwork2/ActionSupport.java  | 13 ++++--------
 .../xwork2/CompositeTextProvider.java           |  6 +++---
 .../xwork2/DefaultActionInvocation.java         |  7 +++----
 .../opensymphony/xwork2/DefaultActionProxy.java |  6 +++---
 .../xwork2/DefaultLocaleProvider.java           |  6 +++---
 .../com/opensymphony/xwork2/ObjectFactory.java  | 13 ++++--------
 .../xwork2/TextProviderSupport.java             |  6 +-----
 .../xwork2/XWorkJUnit4TestCase.java             |  6 +-----
 .../xwork2/config/ConfigurationManager.java     |  6 +++---
 .../xwork2/config/ConfigurationUtil.java        |  6 +++---
 .../xwork2/config/entities/PackageConfig.java   |  6 +++---
 .../xwork2/config/impl/AbstractMatcher.java     |  6 +++---
 .../config/impl/DefaultConfiguration.java       |  6 +++---
 .../config/providers/InterceptorBuilder.java    |  6 +++---
 .../providers/XmlConfigurationProvider.java     |  6 +++---
 .../DefaultConversionAnnotationProcessor.java   |  6 +++---
 .../impl/DefaultConversionFileProcessor.java    |  6 +++---
 .../DefaultConversionPropertiesProcessor.java   |  6 +++---
 .../impl/DefaultObjectTypeDeterminer.java       |  6 +++---
 .../impl/InstantiatingNullHandler.java          |  6 +++---
 .../xwork2/conversion/impl/XWorkConverter.java  |  6 +++---
 .../metadata/ConversionDescription.java         |  8 +++----
 .../xwork2/factory/DefaultConverterFactory.java |  6 +++---
 .../xwork2/interceptor/AliasInterceptor.java    |  6 +++---
 .../xwork2/interceptor/ChainingInterceptor.java |  6 +++---
 .../interceptor/DefaultWorkflowInterceptor.java |  6 +++---
 .../ExceptionMappingInterceptor.java            |  8 +++----
 .../xwork2/interceptor/I18nInterceptor.java     |  6 +++---
 .../xwork2/interceptor/LoggingInterceptor.java  |  6 +++---
 .../interceptor/MethodFilterInterceptor.java    |  6 +++---
 .../interceptor/ParameterFilterInterceptor.java |  6 +++---
 .../ParameterRemoverInterceptor.java            |  6 +++---
 .../interceptor/ParametersInterceptor.java      |  6 +++---
 .../interceptor/PrefixMethodInvocationUtil.java |  6 +++---
 .../xwork2/interceptor/PrepareInterceptor.java  |  4 ++--
 .../StaticParametersInterceptor.java            |  6 +++---
 .../xwork2/interceptor/TimerInterceptor.java    |  8 +++----
 .../com/opensymphony/xwork2/ognl/OgnlUtil.java  |  6 +++---
 .../xwork2/ognl/OgnlValueStack.java             |  6 +++---
 .../xwork2/ognl/SecurityMemberAccess.java       |  6 +++---
 .../ognl/accessor/CompoundRootAccessor.java     |  6 +++---
 .../XWorkCollectionPropertyAccessor.java        |  6 +++---
 .../ognl/accessor/XWorkMapPropertyAccessor.java |  6 +++---
 .../ognl/accessor/XWorkMethodAccessor.java      |  6 +++---
 .../DefaultAcceptedPatternsChecker.java         |  6 +++---
 .../DefaultExcludedPatternsChecker.java         |  6 +++---
 .../xwork2/spring/SpringObjectFactory.java      |  6 +++---
 .../spring/SpringProxyableObjectFactory.java    |  6 +++---
 .../ActionAutowiringInterceptor.java            |  6 +++---
 .../com/opensymphony/xwork2/util/DomHelper.java |  6 +++---
 .../xwork2/util/LocalizedTextUtil.java          |  6 +++---
 .../opensymphony/xwork2/util/ResolverUtil.java  |  6 +++---
 .../com/opensymphony/xwork2/util/URLUtil.java   |  6 +++---
 .../com/opensymphony/xwork2/util/XWorkList.java |  6 +++---
 .../util/classloader/FileResourceStore.java     |  6 +++---
 .../util/classloader/JarResourceStore.java      |  6 +++---
 .../util/classloader/ReloadingClassLoader.java  |  6 +++---
 .../classloader/ResourceStoreClassLoader.java   |  6 +++---
 .../xwork2/util/finder/DefaultClassFinder.java  |  6 +++---
 .../xwork2/util/finder/ResourceFinder.java      |  6 +++---
 .../opensymphony/xwork2/util/finder/UrlSet.java |  6 +++---
 .../xwork2/util/fs/DefaultFileManager.java      |  6 +++---
 .../util/fs/DefaultFileManagerFactory.java      |  6 +++---
 .../xwork2/util/fs/JarEntryRevision.java        |  6 +++---
 .../xwork2/util/profiling/UtilTimerStack.java   |  6 +++---
 .../AnnotationActionValidatorManager.java       |  6 +++---
 .../DefaultActionValidatorManager.java          |  6 +++---
 .../validator/DefaultValidatorFactory.java      |  6 +++---
 .../validator/DefaultValidatorFileParser.java   |  6 +++---
 .../validator/DelegatingValidatorContext.java   |  8 +++----
 .../xwork2/validator/ValidationInterceptor.java |  6 +++---
 .../validators/RangeValidatorSupport.java       |  6 +++---
 .../validators/RegexFieldValidator.java         |  6 +++---
 ...ateConversionErrorFieldValidatorSupport.java |  6 +++---
 .../validator/validators/ValidatorSupport.java  |  6 +++---
 .../opensymphony/xwork2/ActionSupportTest.java  |  6 +-----
 .../xwork2/UnknownHandlerManagerMock.java       |  2 --
 .../interceptor/TimerInterceptorTest.java       |  2 +-
 268 files changed, 798 insertions(+), 867 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/jboss-blank/src/test/java/example/HelloWorldTest.java
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/test/java/example/HelloWorldTest.java b/apps/jboss-blank/src/test/java/example/HelloWorldTest.java
index bdd80d3..4a89271 100644
--- a/apps/jboss-blank/src/test/java/example/HelloWorldTest.java
+++ b/apps/jboss-blank/src/test/java/example/HelloWorldTest.java
@@ -21,9 +21,8 @@
 
 package example;
 
-import org.apache.struts2.StrutsTestCase;
-
 import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.StrutsTestCase;
 
 public class HelloWorldTest extends StrutsTestCase {
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/mailreader/src/main/java/mailreader2/ApplicationListener.java
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/java/mailreader2/ApplicationListener.java b/apps/mailreader/src/main/java/mailreader2/ApplicationListener.java
index 2233375..35e39fd 100644
--- a/apps/mailreader/src/main/java/mailreader2/ApplicationListener.java
+++ b/apps/mailreader/src/main/java/mailreader2/ApplicationListener.java
@@ -21,20 +21,14 @@
 
 package mailreader2;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts.apps.mailreader.dao.impl.memory.MemoryUserDatabase;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
-
-import org.apache.struts.apps.mailreader.dao.impl.memory.MemoryUserDatabase;
-
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import java.io.*;
 
 /**
  * <p><code>ServletContextListener</code> that initializes and finalizes the
@@ -100,7 +94,7 @@ public final class ApplicationListener implements ServletContextListener {
     /**
      * <p>Logging output for this plug in instance.</p>
      */
-    private Logger log = LoggerFactory.getLogger(this.getClass());
+    private Logger log = LogManager.getLogger(this.getClass());
 
     // ------------------------------------------------------------- Properties
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/mailreader/src/main/java/mailreader2/AuthenticationInterceptor.java
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/java/mailreader2/AuthenticationInterceptor.java b/apps/mailreader/src/main/java/mailreader2/AuthenticationInterceptor.java
index 254d968..77470a5 100644
--- a/apps/mailreader/src/main/java/mailreader2/AuthenticationInterceptor.java
+++ b/apps/mailreader/src/main/java/mailreader2/AuthenticationInterceptor.java
@@ -20,12 +20,13 @@
  */
 package mailreader2;
 
-import com.opensymphony.xwork2.interceptor.Interceptor;
-import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.Action;
-import java.util.Map;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
 import org.apache.struts.apps.mailreader.dao.User;
 
+import java.util.Map;
+
 public class AuthenticationInterceptor implements Interceptor  {
 
     public void destroy () {}

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/mailreader/src/main/java/mailreader2/Login.java
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/java/mailreader2/Login.java b/apps/mailreader/src/main/java/mailreader2/Login.java
index 0efa19b..d4c1403 100644
--- a/apps/mailreader/src/main/java/mailreader2/Login.java
+++ b/apps/mailreader/src/main/java/mailreader2/Login.java
@@ -21,8 +21,8 @@
 
 package mailreader2;
 
-import org.apache.struts.apps.mailreader.dao.User;
 import org.apache.struts.apps.mailreader.dao.ExpiredPasswordException;
+import org.apache.struts.apps.mailreader.dao.User;
 
 /**
  * <p> Validate a user login. </p>

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/mailreader/src/main/java/mailreader2/MailreaderSupport.java
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/java/mailreader2/MailreaderSupport.java b/apps/mailreader/src/main/java/mailreader2/MailreaderSupport.java
index 02bad38..0136284 100644
--- a/apps/mailreader/src/main/java/mailreader2/MailreaderSupport.java
+++ b/apps/mailreader/src/main/java/mailreader2/MailreaderSupport.java
@@ -21,8 +21,9 @@
 
 package mailreader2;
 
-import java.util.Map;
-
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts.apps.mailreader.dao.ExpiredPasswordException;
 import org.apache.struts.apps.mailreader.dao.Subscription;
 import org.apache.struts.apps.mailreader.dao.User;
@@ -32,9 +33,7 @@ import org.apache.struts.apps.mailreader.dao.impl.memory.MemoryUser;
 import org.apache.struts2.interceptor.ApplicationAware;
 import org.apache.struts2.interceptor.SessionAware;
 
-import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import java.util.Map;
 
 /**
  * <p> Base Action for MailreaderSupport application. </p>
@@ -388,7 +387,7 @@ public class MailreaderSupport extends ActionSupport
     /**
      * <p><code>Log</code> instance for this application. </p>
      */
-    protected Logger log = LoggerFactory.getLogger(Constants.PACKAGE);
+    protected Logger log = LogManager.getLogger(Constants.PACKAGE);
 
     /**
      * <p> Persist the User object, including subscriptions, to the database.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatAuthenticationInterceptor.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatAuthenticationInterceptor.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatAuthenticationInterceptor.java
index cd4f998..b270316 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatAuthenticationInterceptor.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatAuthenticationInterceptor.java
@@ -25,14 +25,14 @@ import com.opensymphony.xwork2.Action;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.Interceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.dispatcher.SessionMap;
 
 public class ChatAuthenticationInterceptor implements Interceptor {
 
 	private static final long serialVersionUID = 1L;
-	private static final Logger LOG = LoggerFactory.getLogger(ChatAuthenticationInterceptor.class);
+	private static final Logger LOG = LogManager.getLogger(ChatAuthenticationInterceptor.class);
 	public static final String USER_SESSION_KEY = "chatUserSessionKey";
 
 	public void destroy() {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatInterceptor.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatInterceptor.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatInterceptor.java
index cab13bd..06a41d9 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatInterceptor.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatInterceptor.java
@@ -24,8 +24,8 @@ import com.opensymphony.xwork2.Action;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.interceptor.Interceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import javax.servlet.http.HttpSession;
 
@@ -34,7 +34,7 @@ import javax.servlet.http.HttpSession;
  */
 public class ChatInterceptor implements Interceptor {
 
-	private static final Logger LOG = LoggerFactory.getLogger(ChatInterceptor.class);
+	private static final Logger LOG = LogManager.getLogger(ChatInterceptor.class);
 
 	private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatSessionListener.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatSessionListener.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatSessionListener.java
index eb09746..7812cba 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatSessionListener.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/ChatSessionListener.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.showcase.chat;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
@@ -31,7 +31,7 @@ import javax.servlet.http.HttpSessionListener;
 
 public class ChatSessionListener implements HttpSessionListener {
 
-	private static final Logger LOG = LoggerFactory.getLogger(ChatSessionListener.class);
+	private static final Logger LOG = LogManager.getLogger(ChatSessionListener.class);
 
 	public void sessionCreated(HttpSessionEvent event) {
 	}

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/DateConverter.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/DateConverter.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/DateConverter.java
index 8935497..5debf9d 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/DateConverter.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/chat/DateConverter.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.showcase.chat;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.util.StrutsTypeConverter;
 
 import java.text.ParseException;
@@ -31,7 +31,7 @@ import java.util.Map;
 
 public class DateConverter extends StrutsTypeConverter {
 
-	private static final Logger LOG = LoggerFactory.getLogger(DateConverter.class);
+	private static final Logger LOG = LogManager.getLogger(DateConverter.class);
 
 	public Object convertFromString(Map context, String[] values, Class toClass) {
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/bundles/demo/src/main/java/actions/osgi/BundlesAction.java
----------------------------------------------------------------------
diff --git a/bundles/demo/src/main/java/actions/osgi/BundlesAction.java b/bundles/demo/src/main/java/actions/osgi/BundlesAction.java
index 0bf8b2f..eff79cc 100644
--- a/bundles/demo/src/main/java/actions/osgi/BundlesAction.java
+++ b/bundles/demo/src/main/java/actions/osgi/BundlesAction.java
@@ -20,15 +20,11 @@
  */
 package actions.osgi;
 
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Bundle;
-import org.apache.struts2.osgi.interceptor.BundleContextAware;
-import org.apache.struts2.osgi.interceptor.ServiceAware;
-import org.apache.struts2.convention.annotation.ResultPath;
-
-import java.util.List;
-
 import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.convention.annotation.ResultPath;
+import org.apache.struts2.osgi.interceptor.BundleContextAware;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
 
 /**
  * This action shows how to interact with the OSGi container, using the OSGi interceptor

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/bundles/demo/src/main/java/actions/osgi/HelloWorldAction.java
----------------------------------------------------------------------
diff --git a/bundles/demo/src/main/java/actions/osgi/HelloWorldAction.java b/bundles/demo/src/main/java/actions/osgi/HelloWorldAction.java
index f38c68a..cfaa279 100644
--- a/bundles/demo/src/main/java/actions/osgi/HelloWorldAction.java
+++ b/bundles/demo/src/main/java/actions/osgi/HelloWorldAction.java
@@ -3,11 +3,6 @@ package actions.osgi;
 import com.opensymphony.xwork2.ActionSupport;
 import org.apache.struts2.convention.annotation.Action;
 import org.apache.struts2.convention.annotation.ResultPath;
-import org.apache.struts2.osgi.interceptor.BundleContextAware;
-import org.apache.struts2.osgi.interceptor.ServiceAware;
-import org.osgi.framework.BundleContext;
-
-import java.util.List;
 
 @ResultPath("/content")
 public class HelloWorldAction extends ActionSupport {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/bundles/demo/src/main/resources/META-INF/spring/applicationContext.xml
----------------------------------------------------------------------
diff --git a/bundles/demo/src/main/resources/META-INF/spring/applicationContext.xml b/bundles/demo/src/main/resources/META-INF/spring/applicationContext.xml
index bc3cc31..aae9d2b 100644
--- a/bundles/demo/src/main/resources/META-INF/spring/applicationContext.xml
+++ b/bundles/demo/src/main/resources/META-INF/spring/applicationContext.xml
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="
-    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
-    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
-    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
     <bean class="actions.osgi.Message" id="message">
         <constructor-arg type="java.lang.String" value="Welcome to the OSGi plugin. You can checkout any time you like, but can never leave"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 6eed44f..15fd2c5 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -191,6 +191,13 @@
             <optional>true</optional>
         </dependency>
 
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
         <!-- File upload -->
         <dependency>
             <groupId>commons-fileupload</groupId>
@@ -259,12 +266,6 @@
         </dependency>
 
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-all</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/RequestUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/RequestUtils.java b/core/src/main/java/org/apache/struts2/RequestUtils.java
index aa911a5..0ba079d 100644
--- a/core/src/main/java/org/apache/struts2/RequestUtils.java
+++ b/core/src/main/java/org/apache/struts2/RequestUtils.java
@@ -21,9 +21,9 @@
 
 package org.apache.struts2;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
@@ -37,7 +37,7 @@ import java.util.TimeZone;
  */
 public class RequestUtils {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RequestUtils.class);
+    private static final Logger LOG = LogManager.getLogger(RequestUtils.class);
 
     private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/ServletActionContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/ServletActionContext.java b/core/src/main/java/org/apache/struts2/ServletActionContext.java
index db34fda..e3f50af 100644
--- a/core/src/main/java/org/apache/struts2/ServletActionContext.java
+++ b/core/src/main/java/org/apache/struts2/ServletActionContext.java
@@ -21,17 +21,15 @@
 
 package org.apache.struts2;
 
-import java.util.Map;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.PageContext;
-
-import org.apache.struts2.dispatcher.mapper.ActionMapping;
-
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.ValueStack;
+import java.util.Map;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/ActionComponent.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/ActionComponent.java b/core/src/main/java/org/apache/struts2/components/ActionComponent.java
index f184454..fd58339 100644
--- a/core/src/main/java/org/apache/struts2/components/ActionComponent.java
+++ b/core/src/main/java/org/apache/struts2/components/ActionComponent.java
@@ -28,8 +28,8 @@ import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.StrutsStatics;
@@ -118,7 +118,7 @@ import java.util.Map;
  */
 @StrutsTag(name="action", tldTagClass="org.apache.struts2.views.jsp.ActionTag", description="Execute an action from within a view")
 public class ActionComponent extends ContextBean {
-    private static final Logger LOG = LoggerFactory.getLogger(ActionComponent.class);
+    private static final Logger LOG = LogManager.getLogger(ActionComponent.class);
 
     protected HttpServletResponse res;
     protected HttpServletRequest req;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Anchor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Anchor.java b/core/src/main/java/org/apache/struts2/components/Anchor.java
index 697d8f2..3d7fdf9 100644
--- a/core/src/main/java/org/apache/struts2/components/Anchor.java
+++ b/core/src/main/java/org/apache/struts2/components/Anchor.java
@@ -23,8 +23,8 @@ package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
@@ -61,7 +61,7 @@ import java.util.LinkedHashMap;
         description = "Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets",
         allowDynamicAttributes = true)
 public class Anchor extends ClosingUIBean {
-    private static final Logger LOG = LoggerFactory.getLogger(Anchor.class);
+    private static final Logger LOG = LogManager.getLogger(Anchor.class);
 
     public static final String OPEN_TEMPLATE = "a";
     public static final String TEMPLATE = "a-close";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/AppendIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/AppendIterator.java b/core/src/main/java/org/apache/struts2/components/AppendIterator.java
index 633fc0a..6021fe3 100644
--- a/core/src/main/java/org/apache/struts2/components/AppendIterator.java
+++ b/core/src/main/java/org/apache/struts2/components/AppendIterator.java
@@ -33,8 +33,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -119,7 +119,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
 @StrutsTag(name="append", tldTagClass="org.apache.struts2.views.jsp.iterator.AppendIteratorTag", description="Append the values of a list of iterators to one iterator")
 public class AppendIterator extends ContextBean implements UnnamedParametric {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AppendIterator.class);
+    private static final Logger LOG = LogManager.getLogger(AppendIterator.class);
 
     private AppendIteratorFilter appendIteratorFilter= null;
     private List _parameters;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Bean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Bean.java b/core/src/main/java/org/apache/struts2/components/Bean.java
index eb361c1..2039d95 100644
--- a/core/src/main/java/org/apache/struts2/components/Bean.java
+++ b/core/src/main/java/org/apache/struts2/components/Bean.java
@@ -24,8 +24,8 @@ package org.apache.struts2.components;
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
@@ -95,7 +95,7 @@ import java.io.Writer;
 @StrutsTag(name = "bean", tldTagClass = "org.apache.struts2.views.jsp.BeanTag",
         description = "Instantiate a JavaBean and place it in the context")
 public class Bean extends ContextBean {
-    protected static final Logger LOG = LoggerFactory.getLogger(Bean.class);
+    protected static final Logger LOG = LogManager.getLogger(Bean.class);
 
     protected Object bean;
     protected String name;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java b/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
index d315fd7..123d58b 100644
--- a/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import javax.servlet.http.HttpServletRequest;
@@ -34,7 +34,7 @@ import java.io.Writer;
  * ClosingUIBean is the standard superclass for UI components such as div etc.
  */
 public abstract class ClosingUIBean extends UIBean {
-    private static final Logger LOG = LoggerFactory.getLogger(ClosingUIBean.class);
+    private static final Logger LOG = LogManager.getLogger(ClosingUIBean.class);
 
     protected ClosingUIBean(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
         super(stack, request, response);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Component.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Component.java b/core/src/main/java/org/apache/struts2/components/Component.java
index 62e07ee..bde06c0 100644
--- a/core/src/main/java/org/apache/struts2/components/Component.java
+++ b/core/src/main/java/org/apache/struts2/components/Component.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.AnnotationUtils;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
@@ -60,7 +60,7 @@ import java.util.concurrent.ConcurrentMap;
  */
 public class Component {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Component.class);
+    private static final Logger LOG = LogManager.getLogger(Component.class);
 
     public static final String COMPONENT_STACK = "__component_stack";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Date.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Date.java b/core/src/main/java/org/apache/struts2/components/Date.java
index 0bb1207..e086276 100644
--- a/core/src/main/java/org/apache/struts2/components/Date.java
+++ b/core/src/main/java/org/apache/struts2/components/Date.java
@@ -24,8 +24,8 @@ package org.apache.struts2.components;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.TextProvider;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
@@ -143,7 +143,7 @@ import java.util.TimeZone;
 @StrutsTag(name="date", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.DateTag", description="Render a formatted date.")
 public class Date extends ContextBean {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Date.class);
+    private static final Logger LOG = LogManager.getLogger(Date.class);
     /**
      * Property name to fall back when no format is specified
      */

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/File.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/File.java b/core/src/main/java/org/apache/struts2/components/File.java
index 449ba1f..6d86182 100644
--- a/core/src/main/java/org/apache/struts2/components/File.java
+++ b/core/src/main/java/org/apache/struts2/components/File.java
@@ -28,8 +28,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -52,7 +52,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
     description="Render a file input field",
     allowDynamicAttributes=true)
 public class File extends UIBean {
-    private final static Logger LOG = LoggerFactory.getLogger(File.class);
+    private final static Logger LOG = LogManager.getLogger(File.class);
 
     final public static String TEMPLATE = "file";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/I18n.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/I18n.java b/core/src/main/java/org/apache/struts2/components/I18n.java
index 82d991e..82d690b 100644
--- a/core/src/main/java/org/apache/struts2/components/I18n.java
+++ b/core/src/main/java/org/apache/struts2/components/I18n.java
@@ -37,8 +37,8 @@ import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -89,7 +89,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
                 " and place it on the value stack")
 public class I18n extends Component {
 
-    private static final Logger LOG = LoggerFactory.getLogger(I18n.class);
+    private static final Logger LOG = LogManager.getLogger(I18n.class);
 
     protected boolean pushed;
     protected String name;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Include.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Include.java b/core/src/main/java/org/apache/struts2/components/Include.java
index 9a918f0..fbc702f 100644
--- a/core/src/main/java/org/apache/struts2/components/Include.java
+++ b/core/src/main/java/org/apache/struts2/components/Include.java
@@ -49,8 +49,8 @@ import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -101,7 +101,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
                 "(result of servlet or a JSP page)")
 public class Include extends Component {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Include.class);
+    private static final Logger LOG = LogManager.getLogger(Include.class);
 
     private static String systemEncoding = System.getProperty("file.encoding");
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java b/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java
index e5628fe..0dcf7d0 100644
--- a/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java
+++ b/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java
@@ -31,8 +31,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -75,7 +75,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
 @StrutsTag(name="inputtransferselect", tldTagClass="org.apache.struts2.views.jsp.ui.InputTransferSelectTag", description="Renders an input form")
 public class InputTransferSelect extends ListUIBean {
 
-    private static final Logger LOG = LoggerFactory.getLogger(InputTransferSelect.class);
+    private static final Logger LOG = LogManager.getLogger(InputTransferSelect.class);
 
     private static final String TEMPLATE = "inputtransferselect";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/IteratorComponent.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/IteratorComponent.java b/core/src/main/java/org/apache/struts2/components/IteratorComponent.java
index e2acee8..45a8ee1 100644
--- a/core/src/main/java/org/apache/struts2/components/IteratorComponent.java
+++ b/core/src/main/java/org/apache/struts2/components/IteratorComponent.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.util.MakeIterator;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
@@ -225,7 +225,7 @@ import java.util.List;
  */
 @StrutsTag(name="iterator", tldTagClass="org.apache.struts2.views.jsp.IteratorTag", description="Iterate over a iterable value")
 public class IteratorComponent extends ContextBean {
-    private static final Logger LOG = LoggerFactory.getLogger(IteratorComponent.class);
+    private static final Logger LOG = LogManager.getLogger(IteratorComponent.class);
 
     protected Iterator iterator;
     protected IteratorStatus status;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/MergeIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/MergeIterator.java b/core/src/main/java/org/apache/struts2/components/MergeIterator.java
index a0c8c2a..f4aa31b 100644
--- a/core/src/main/java/org/apache/struts2/components/MergeIterator.java
+++ b/core/src/main/java/org/apache/struts2/components/MergeIterator.java
@@ -33,8 +33,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -133,7 +133,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
                 "of a list of iterators into one iterator")
 public class MergeIterator extends ContextBean implements UnnamedParametric {
 
-    private static final Logger LOG = LoggerFactory.getLogger(MergeIterator.class);
+    private static final Logger LOG = LogManager.getLogger(MergeIterator.class);
 
     private MergeIteratorFilter mergeIteratorFilter = null;
     private List _parameters;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Number.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Number.java b/core/src/main/java/org/apache/struts2/components/Number.java
index d89f45d..400ade8 100644
--- a/core/src/main/java/org/apache/struts2/components/Number.java
+++ b/core/src/main/java/org/apache/struts2/components/Number.java
@@ -26,8 +26,8 @@ package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
@@ -103,7 +103,7 @@ import java.util.Currency;
 @StrutsTag(name = "number", tldBodyContent = "empty", tldTagClass = "org.apache.struts2.views.jsp.NumberTag", description = "Render a formatted number.")
 public class Number extends ContextBean {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Number.class);
+    private static final Logger LOG = LogManager.getLogger(Number.class);
     /**
      * Property name to fall back when no format is specified
      */

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/OptGroup.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/OptGroup.java b/core/src/main/java/org/apache/struts2/components/OptGroup.java
index 4eb3eb2..d3e4d77 100644
--- a/core/src/main/java/org/apache/struts2/components/OptGroup.java
+++ b/core/src/main/java/org/apache/struts2/components/OptGroup.java
@@ -34,8 +34,8 @@ import org.apache.struts2.views.annotations.StrutsTagAttribute;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -79,7 +79,7 @@ public class OptGroup extends Component {
 
     public static final String INTERNAL_LIST_UI_BEAN_LIST_PARAMETER_KEY = "optGroupInternalListUiBeanList";
 
-    private static Logger LOG = LoggerFactory.getLogger(OptGroup.class);
+    private static Logger LOG = LogManager.getLogger(OptGroup.class);
 
     protected HttpServletRequest req;
     protected HttpServletResponse res;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
index 2bac1bb..68a3f2b 100644
--- a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
+++ b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
@@ -94,7 +94,7 @@ import java.util.Map;
 @StrutsTag(name="optiontransferselect", tldTagClass="org.apache.struts2.views.jsp.ui.OptionTransferSelectTag", description="Renders an input form")
 public class OptionTransferSelect extends DoubleListUIBean {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OptionTransferSelect.class);
+    private static final Logger LOG = LogManager.getLogger(OptionTransferSelect.class);
 
     private static final String TEMPLATE = "optiontransferselect";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Property.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Property.java b/core/src/main/java/org/apache/struts2/components/Property.java
index a01147c..5019b55 100644
--- a/core/src/main/java/org/apache/struts2/components/Property.java
+++ b/core/src/main/java/org/apache/struts2/components/Property.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
@@ -89,7 +89,7 @@ import java.io.Writer;
 @StrutsTag(name="property", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.PropertyTag",
     description="Print out expression which evaluates against the stack")
 public class Property extends Component {
-    private static final Logger LOG = LoggerFactory.getLogger(Property.class);
+    private static final Logger LOG = LogManager.getLogger(Property.class);
 
     public Property(ValueStack stack) {
         super(stack);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
index 0b4e13b..4216ddb 100644
--- a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
+++ b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
@@ -26,8 +26,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
@@ -47,7 +47,7 @@ public class ServletUrlRenderer implements UrlRenderer {
     /**
      * Provide a logging instance.
      */
-    private static final Logger LOG = LoggerFactory.getLogger(ServletUrlRenderer.class);
+    private static final Logger LOG = LogManager.getLogger(ServletUrlRenderer.class);
 
     private ActionMapper actionMapper;
     private UrlHelper urlHelper;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Submit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Submit.java b/core/src/main/java/org/apache/struts2/components/Submit.java
index 5db4e11..85fb0d2 100644
--- a/core/src/main/java/org/apache/struts2/components/Submit.java
+++ b/core/src/main/java/org/apache/struts2/components/Submit.java
@@ -30,8 +30,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -53,7 +53,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
     allowDynamicAttributes=true)
 public class Submit extends FormButton {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Submit.class);
+    private static final Logger LOG = LogManager.getLogger(Submit.class);
     final public static String OPEN_TEMPLATE = "submit";
     final public static String TEMPLATE = "submit-close";
     protected String src;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/Text.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Text.java b/core/src/main/java/org/apache/struts2/components/Text.java
index 146d58f..6ec0b39 100644
--- a/core/src/main/java/org/apache/struts2/components/Text.java
+++ b/core/src/main/java/org/apache/struts2/components/Text.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.util.TextProviderHelper;
 import org.apache.struts2.views.annotations.StrutsTag;
@@ -119,7 +119,7 @@ import java.util.List;
     tldTagClass="org.apache.struts2.views.jsp.TextTag",
     description="Render a I18n text message")
 public class Text extends ContextBean implements Param.UnnamedParametric {
-    private static final Logger LOG = LoggerFactory.getLogger(Text.class);
+    private static final Logger LOG = LogManager.getLogger(Text.class);
 
     protected List values = Collections.EMPTY_LIST;
     protected String actualName;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/UIBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java b/core/src/main/java/org/apache/struts2/components/UIBean.java
index 5fd99a9..8c9ebf6 100644
--- a/core/src/main/java/org/apache/struts2/components/UIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/UIBean.java
@@ -24,8 +24,8 @@ package org.apache.struts2.components;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.components.template.Template;
@@ -434,7 +434,7 @@ import java.util.Map;
  *
  */
 public abstract class UIBean extends Component {
-    private static final Logger LOG = LoggerFactory.getLogger(UIBean.class);
+    private static final Logger LOG = LogManager.getLogger(UIBean.class);
 
     protected HttpServletRequest request;
     protected HttpServletResponse response;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/URL.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/URL.java b/core/src/main/java/org/apache/struts2/components/URL.java
index 850bcce..a163acb 100644
--- a/core/src/main/java/org/apache/struts2/components/URL.java
+++ b/core/src/main/java/org/apache/struts2/components/URL.java
@@ -23,8 +23,8 @@ package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
@@ -110,7 +110,7 @@ import java.io.Writer;
  */
 @StrutsTag(name="url", tldTagClass="org.apache.struts2.views.jsp.URLTag", description="This tag is used to create a URL")
 public class URL extends ContextBean {
-    private static final Logger LOG = LoggerFactory.getLogger(URL.class);
+    private static final Logger LOG = LogManager.getLogger(URL.class);
     private UrlProvider urlProvider;
     private UrlRenderer urlRenderer;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/UpDownSelect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/UpDownSelect.java b/core/src/main/java/org/apache/struts2/components/UpDownSelect.java
index af24bf9..c2a2694 100644
--- a/core/src/main/java/org/apache/struts2/components/UpDownSelect.java
+++ b/core/src/main/java/org/apache/struts2/components/UpDownSelect.java
@@ -31,8 +31,8 @@ import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: javadoc -->
@@ -82,7 +82,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
         description="Create a Select component with buttons to move the elements in the select component up and down")
 public class UpDownSelect extends Select {
 
-    private static final Logger LOG = LoggerFactory.getLogger(UpDownSelect.class);
+    private static final Logger LOG = LogManager.getLogger(UpDownSelect.class);
 
 
     final public static String TEMPLATE = "updownselect";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
index 0f3df8d..cf7414a 100644
--- a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
+++ b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.components.template;
 
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 
 import javax.servlet.ServletContext;
@@ -42,7 +42,7 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 public abstract class BaseTemplateEngine implements TemplateEngine {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BaseTemplateEngine.class);
+    private static final Logger LOG = LogManager.getLogger(BaseTemplateEngine.class);
 
     /**
      * The default theme properties file name. Default is 'theme.properties'

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java
index 9368ec7..478eb53 100644
--- a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java
+++ b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java
@@ -39,8 +39,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import freemarker.template.Configuration;
 import freemarker.template.SimpleHash;
@@ -65,7 +65,7 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine {
         }
     }
 
-    private static final Logger LOG = LoggerFactory.getLogger(FreemarkerTemplateEngine.class);
+    private static final Logger LOG = LogManager.getLogger(FreemarkerTemplateEngine.class);
 
     @Inject
     public void setFreemarkerManager(FreemarkerManager mgr) {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java
index 8a7d299..95b4ed6 100644
--- a/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java
+++ b/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java
@@ -34,14 +34,14 @@ import org.apache.struts2.components.Include;
 import org.apache.struts2.components.UIBean;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * JSP based template engine.
  */
 public class JspTemplateEngine extends BaseTemplateEngine {
-    private static final Logger LOG = LoggerFactory.getLogger(JspTemplateEngine.class);
+    private static final Logger LOG = LogManager.getLogger(JspTemplateEngine.class);
 
 	String encoding;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java
index 4c665fe..87fc2b8 100644
--- a/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java
+++ b/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java
@@ -36,14 +36,14 @@ import org.apache.velocity.app.VelocityEngine;
 import org.apache.velocity.context.Context;
 
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Velocity based template engine.
  */
 public class VelocityTemplateEngine extends BaseTemplateEngine {
-    private static final Logger LOG = LoggerFactory.getLogger(VelocityTemplateEngine.class);
+    private static final Logger LOG = LogManager.getLogger(VelocityTemplateEngine.class);
     
     private VelocityManager velocityManager;
     

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
index 608d834..a75b877 100644
--- a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java
@@ -11,8 +11,8 @@ import com.opensymphony.xwork2.inject.Factory;
 import com.opensymphony.xwork2.inject.Scope;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Properties;
 
@@ -21,7 +21,7 @@ import java.util.Properties;
  */
 public abstract class AbstractBeanSelectionProvider implements BeanSelectionProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractBeanSelectionProvider.class);
+    private static final Logger LOG = LogManager.getLogger(AbstractBeanSelectionProvider.class);
 
     public static final String DEFAULT_BEAN_NAME = "struts";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
index 3a6deb2..671ea59 100644
--- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
@@ -56,8 +56,8 @@ import com.opensymphony.xwork2.util.PatternMatcher;
 import com.opensymphony.xwork2.util.TextParser;
 import com.opensymphony.xwork2.util.ValueStackFactory;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextFactory;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import com.opensymphony.xwork2.validator.ActionValidatorManager;
@@ -357,7 +357,7 @@ import java.util.StringTokenizer;
  */
 public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultBeanSelectionProvider.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultBeanSelectionProvider.class);
 
     public void register(ContainerBuilder builder, LocatableProperties props) {
         alias(ObjectFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY, builder, props);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/DefaultSettings.java b/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
index 7f21e4c..cc30f48 100644
--- a/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
+++ b/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.config;
 
 import com.opensymphony.xwork2.util.location.Location;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 
 import java.util.ArrayList;
@@ -38,7 +38,7 @@ import java.util.StringTokenizer;
  */
 public class DefaultSettings implements Settings {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultSettings.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultSettings.class);
 
     /**
      * The Settings object that handles API calls.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java b/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java
index 333608b..3bbf9b4 100644
--- a/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java
+++ b/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
 import com.opensymphony.xwork2.util.location.Location;
 import com.opensymphony.xwork2.util.location.LocationImpl;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsException;
 
 import java.io.IOException;
@@ -40,7 +40,7 @@ import java.util.Iterator;
  */
 class PropertiesSettings implements Settings {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PropertiesSettings.class);
+    private static final Logger LOG = LogManager.getLogger(PropertiesSettings.class);
 
     private LocatableProperties settings;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java b/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
index cf055f9..f09d6f3 100644
--- a/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
@@ -40,15 +40,15 @@ import com.opensymphony.xwork2.inject.ContainerBuilder;
 import com.opensymphony.xwork2.inject.Context;
 import com.opensymphony.xwork2.inject.Factory;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Override Xwork class so we can use an arbitrary config file
  */
 public class StrutsXmlConfigurationProvider extends XmlConfigurationProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsXmlConfigurationProvider.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsXmlConfigurationProvider.class);
     private File baseDir = null;
     private String filename;
     private String reloadKey;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java b/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
index bc8032d..8664b64 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
@@ -22,8 +22,8 @@
 package org.apache.struts2.dispatcher;
 
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 
 import javax.servlet.Filter;
@@ -70,7 +70,7 @@ import java.io.IOException;
  */
 public class ActionContextCleanUp implements Filter {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ActionContextCleanUp.class);
+    private static final Logger LOG = LogManager.getLogger(ActionContextCleanUp.class);
 
     private static final String COUNTER = "__cleanup_recursion_counter";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
index c093402..2b4061c 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java
@@ -3,8 +3,8 @@ package org.apache.struts2.dispatcher;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.location.Location;
 import com.opensymphony.xwork2.util.location.LocationUtils;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import freemarker.template.Template;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
@@ -26,7 +26,7 @@ import java.util.List;
  */
 public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultDispatcherErrorHandler.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultDispatcherErrorHandler.class);
 
     private FreemarkerManager freemarkerManager;
     private boolean devMode;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
index c62282f..d6004eb 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java
@@ -22,8 +22,8 @@ package org.apache.struts2.dispatcher;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.dispatcher.ng.HostConfig;
 
@@ -66,7 +66,7 @@ public class DefaultStaticContentLoader implements StaticContentLoader {
     /**
      * Provide a logging instance.
      */
-    private Logger LOG = LoggerFactory.getLogger(DefaultStaticContentLoader.class);
+    private Logger LOG = LogManager.getLogger(DefaultStaticContentLoader.class);
 
     /**
      * Store set of path prefixes to use with static resources.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
index 3a4e305..d01d6e7 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
@@ -38,8 +38,8 @@ import com.opensymphony.xwork2.util.ValueStackFactory;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
 import com.opensymphony.xwork2.util.location.Location;
 import com.opensymphony.xwork2.util.location.LocationUtils;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
@@ -77,7 +77,7 @@ public class Dispatcher {
     /**
      * Provide a logging instance.
      */
-    private static final Logger LOG = LoggerFactory.getLogger(Dispatcher.class);
+    private static final Logger LOG = LogManager.getLogger(Dispatcher.class);
 
     /**
      * Provide a thread local instance.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
index 22fc051..715ad94 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
@@ -28,8 +28,9 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import org.apache.struts2.RequestUtils;
 import org.apache.struts2.StrutsStatics;
@@ -199,6 +200,7 @@ public class FilterDispatcher implements StrutsStatics, Filter {
         }
     }
 
+    @Deprecated
     private void initLogging() {
         String factoryName = filterConfig.getInitParameter("loggerFactory");
         if (factoryName != null) {
@@ -218,7 +220,7 @@ public class FilterDispatcher implements StrutsStatics, Filter {
             }
         }
 
-        log = LoggerFactory.getLogger(FilterDispatcher.class);
+        log = LogManager.getLogger(FilterDispatcher.class);
 
     }
 


[15/15] struts git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts into WW-4504

Posted by jo...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/struts into WW-4504


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

Branch: refs/heads/master
Commit: 73ef38d72718410cf5f0bbc1b8bc52f50836a885
Parents: fe58d73 8c2b321
Author: Johannes Geppert <jo...@gmail.com>
Authored: Tue May 26 19:14:34 2015 +0200
Committer: Johannes Geppert <jo...@gmail.com>
Committed: Tue May 26 19:14:34 2015 +0200

----------------------------------------------------------------------
 .gitignore                          |  6 +-----
 assembly/pom.xml                    | 21 ---------------------
 assembly/src/main/assembly/all.xml  | 16 ----------------
 assembly/src/main/assembly/docs.xml | 16 ----------------
 bom/pom.xml                         | 24 ++----------------------
 pom.xml                             | 20 --------------------
 6 files changed, 3 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/73ef38d7/pom.xml
----------------------------------------------------------------------


[03/15] struts git commit: WW-4504 - Mark current logging layer as @deprecated and use Log4j2 as default one

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
----------------------------------------------------------------------
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
index c4fd827..e637f20 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.RequestUtils;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
@@ -96,7 +96,7 @@ import java.util.HashMap;
  */
 public class RestActionMapper extends DefaultActionMapper {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(RestActionMapper.class);
+    protected static final Logger LOG = LogManager.getLogger(RestActionMapper.class);
     public static final String HTTP_METHOD_PARAM = "_method";
     private String idParameterName = "id";
     private String indexMethodName = "index";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
index 72193ae..ce794c1 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
@@ -134,7 +134,7 @@ public class RestWorkflowInterceptor extends MethodFilterInterceptor {
 	
 	private static final long serialVersionUID = 7563014655616490865L;
 
-	private static final Logger LOG = LoggerFactory.getLogger(RestWorkflowInterceptor.class);
+	private static final Logger LOG = LogManager.getLogger(RestWorkflowInterceptor.class);
 	
 	private String inputResultName = Action.INPUT;
 	

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java
----------------------------------------------------------------------
diff --git a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java
index 2a30c34..accfd3b 100644
--- a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java
+++ b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.sitegraph;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.sitegraph.renderers.DOTRenderer;
 
@@ -45,7 +45,7 @@ import java.io.*;
  */
 public class SiteGraph {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SiteGraph.class);
+    private static final Logger LOG = LogManager.getLogger(SiteGraph.class);
 
     private String configDir;
     private String views;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java
----------------------------------------------------------------------
diff --git a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java
index 11605fa..1e6b245 100644
--- a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java
+++ b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java
@@ -25,8 +25,8 @@ import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.ConfigurationProvider;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.config.DefaultBeanSelectionProvider;
 import org.apache.struts2.config.DefaultPropertiesProvider;
 import org.apache.struts2.config.PropertiesConfigurationProvider;
@@ -48,7 +48,7 @@ import java.util.Set;
  */
 public class StrutsConfigRetriever {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsConfigRetriever.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsConfigRetriever.class);
     private static String configDir;
     private static String[] views;
     private static boolean isXWorkStarted = false;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java
----------------------------------------------------------------------
diff --git a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java
index 91b44b7..1ac2f3c 100644
--- a/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java
+++ b/plugins/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java
@@ -21,8 +21,8 @@
 
 package org.apache.struts2.sitegraph.entities;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.sitegraph.model.Link;
 
 import java.io.*;
@@ -37,7 +37,7 @@ public abstract class FileBasedView implements View {
     private String name;
     private String contents;
 
-    private static final Logger LOG = LoggerFactory.getLogger(FileBasedView.class);
+    private static final Logger LOG = LogManager.getLogger(FileBasedView.class);
 
     public FileBasedView(File file) {
         this.name = file.getName();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
----------------------------------------------------------------------
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
index b2b9b35..4f573bd 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
@@ -23,7 +23,7 @@ package org.apache.struts2.sitemesh;
 import com.opensymphony.module.sitemesh.HTMLPage;
 import com.opensymphony.module.sitemesh.RequestConstants;
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
 import freemarker.core.InvalidReferenceException;
 import freemarker.template.Configuration;
 import freemarker.template.ObjectWrapper;
@@ -31,6 +31,7 @@ import freemarker.template.SimpleHash;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;
 import freemarker.template.TemplateModel;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.dispatcher.Dispatcher;
@@ -57,26 +58,11 @@ import java.util.Locale;
  * own manager</p>
  */
 public class FreemarkerDecoratorServlet extends freemarker.ext.servlet.FreemarkerServlet {
-    private static final com.opensymphony.xwork2.util.logging.Logger LOG = LoggerFactory.getLogger(FreemarkerDecoratorServlet.class);
-
-
-    protected FreemarkerManager freemarkerManager;
-
 
+    private static final Logger LOG = LogManager.getLogger(FreemarkerDecoratorServlet.class);
     public static final long serialVersionUID = -2440216393145762479L;
 
-
-/*
-    private static final String EXPIRATION_DATE;
-
-    static {
-        // Generate expiration date that is one year from now in the past
-        GregorianCalendar expiration = new GregorianCalendar();
-        expiration.roll(Calendar.YEAR, -1);
-        SimpleDateFormat httpDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", java.util.Locale.US);
-        EXPIRATION_DATE = httpDate.format(expiration.getTime());
-    }
-*/
+    protected FreemarkerManager freemarkerManager;
     protected String templatePath;
     protected boolean nocache;
     protected boolean debug;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsFreemarkerDecorator.java
----------------------------------------------------------------------
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsFreemarkerDecorator.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsFreemarkerDecorator.java
index 44f7905..d767f18 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsFreemarkerDecorator.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsFreemarkerDecorator.java
@@ -26,8 +26,8 @@ import com.opensymphony.module.sitemesh.HTMLPage;
 import com.opensymphony.sitemesh.Content;
 import com.opensymphony.sitemesh.compatability.Content2HTMLPage;
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import freemarker.template.Configuration;
 import freemarker.template.SimpleHash;
@@ -45,7 +45,7 @@ import java.io.IOException;
  * Extends OldDecorator2NewStrutsDecorator to add Struts functionality  for Freemarker
  */
 public class OldDecorator2NewStrutsFreemarkerDecorator extends OldDecorator2NewStrutsDecorator {
-    private static final Logger LOG = LoggerFactory.getLogger(OldDecorator2NewStrutsFreemarkerDecorator.class);
+    private static final Logger LOG = LogManager.getLogger(OldDecorator2NewStrutsFreemarkerDecorator.class);
 
     private static FreemarkerManager freemarkerManager;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsVelocityDecorator.java
----------------------------------------------------------------------
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsVelocityDecorator.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsVelocityDecorator.java
index b5362ce..cb1ea18 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsVelocityDecorator.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/OldDecorator2NewStrutsVelocityDecorator.java
@@ -29,8 +29,8 @@ import com.opensymphony.sitemesh.Content;
 import com.opensymphony.sitemesh.compatability.Content2HTMLPage;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.views.velocity.VelocityManager;
 import org.apache.velocity.context.Context;
 
@@ -45,7 +45,7 @@ import java.io.PrintWriter;
  * Extends OldDecorator2NewStrutsDecorator to add Struts functionality for Velocity
  */
 public class OldDecorator2NewStrutsVelocityDecorator extends OldDecorator2NewStrutsDecorator {
-    private static final Logger LOG = LoggerFactory.getLogger(OldDecorator2NewStrutsFreemarkerDecorator.class);
+    private static final Logger LOG = LogManager.getLogger(OldDecorator2NewStrutsFreemarkerDecorator.class);
 
     private static VelocityManager velocityManager;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
----------------------------------------------------------------------
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
index 96405fb..a47802f 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
@@ -21,15 +21,15 @@ package org.apache.struts2.sitemesh;
 import com.opensymphony.module.sitemesh.Config;
 import com.opensymphony.module.sitemesh.factory.DefaultFactory;
 import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsStatics;
 
 public class StrutsSiteMeshFactory extends DefaultFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsSiteMeshFactory.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsSiteMeshFactory.class);
 
     public StrutsSiteMeshFactory(Config config) {
         super(config);

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
----------------------------------------------------------------------
diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
index 60f782d..b3f9a53 100644
--- a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
+++ b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java
@@ -23,8 +23,8 @@ package org.apache.struts2.spring;
 import com.opensymphony.xwork2.util.classloader.FileResourceStore;
 import com.opensymphony.xwork2.util.classloader.JarResourceStore;
 import com.opensymphony.xwork2.util.classloader.ReloadingClassLoader;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.jci.monitor.FilesystemAlterationListener;
 import org.apache.commons.jci.monitor.FilesystemAlterationMonitor;
 import org.apache.commons.jci.monitor.FilesystemAlterationObserver;
@@ -71,7 +71,7 @@ import java.util.regex.Pattern;
  * </ul>
  */
 public class ClassReloadingXMLWebApplicationContext extends XmlWebApplicationContext implements FilesystemAlterationListener {
-    private static final Logger LOG = LoggerFactory.getLogger(ClassReloadingXMLWebApplicationContext.class);
+    private static final Logger LOG = LogManager.getLogger(ClassReloadingXMLWebApplicationContext.class);
 
     protected ReloadingClassLoader classLoader;
     protected FilesystemAlterationMonitor fam;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java
----------------------------------------------------------------------
diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java
index d95830a..c34a6e4 100644
--- a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java
+++ b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java
@@ -24,8 +24,8 @@ package org.apache.struts2.spring;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.spring.SpringObjectFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.StrutsConstants;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
@@ -44,7 +44,7 @@ import javax.servlet.ServletContext;
  *
  */
 public class StrutsSpringObjectFactory extends SpringObjectFactory {
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsSpringObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsSpringObjectFactory.class);
 
     //@Inject
     //public StrutsSpringObjectFactory(

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesListener.java
----------------------------------------------------------------------
diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesListener.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesListener.java
index b2213ca..b04908a 100644
--- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesListener.java
+++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesListener.java
@@ -31,8 +31,8 @@ import org.apache.tiles.TilesException;
 import org.apache.tiles.factory.TilesContainerFactory;
 import org.apache.tiles.web.startup.TilesListener;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Listener used to automatically inject ServletContext
@@ -47,7 +47,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  */
 public class StrutsTilesListener extends TilesListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsTilesListener.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsTilesListener.class);
 
     private static final Map<String, String> INIT;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
----------------------------------------------------------------------
diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
index 856517c..0e2f865 100644
--- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
+++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
@@ -24,8 +24,8 @@ package org.apache.struts2.tiles;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.inject.Container;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.views.freemarker.FreemarkerResult;
 import org.apache.tiles.context.TilesRequestContext;
@@ -48,7 +48,7 @@ import java.io.IOException;
  */
 public class StrutsTilesRequestContext extends TilesRequestContextWrapper {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StrutsTilesRequestContext.class);
+    private static final Logger LOG = LogManager.getLogger(StrutsTilesRequestContext.class);
 
     /**
      * The mask used to detect requests which should be intercepted.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ActionChainResult.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ActionChainResult.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ActionChainResult.java
index 170c567..694dbfe 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ActionChainResult.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ActionChainResult.java
@@ -18,8 +18,8 @@ package com.opensymphony.xwork2;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.*;
 
@@ -81,7 +81,7 @@ import java.util.*;
 */
 public class ActionChainResult implements Result {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ActionChainResult.class);
+    private static final Logger LOG = LogManager.getLogger(ActionChainResult.class);
 
     /**
      * The result parameter name to set the name of the action to chain to.

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
index 31eb5d3..940dbfa 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
@@ -18,16 +18,11 @@ package com.opensymphony.xwork2;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
+import java.util.*;
 
 
 /**
@@ -36,7 +31,7 @@ import java.util.ResourceBundle;
  */
 public class ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable {
 
-    protected static Logger LOG = LoggerFactory.getLogger(ActionSupport.class);
+    protected static Logger LOG = LogManager.getLogger(ActionSupport.class);
 
     private final ValidationAwareSupport validationAware = new ValidationAwareSupport();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/CompositeTextProvider.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/CompositeTextProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/CompositeTextProvider.java
index 2e1ce4c..af18986 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/CompositeTextProvider.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/CompositeTextProvider.java
@@ -1,8 +1,8 @@
 package com.opensymphony.xwork2;
 
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.*;
 
@@ -17,7 +17,7 @@ import java.util.*;
  */
 public class CompositeTextProvider implements TextProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CompositeTextProvider.class);
+    private static final Logger LOG = LogManager.getLogger(CompositeTextProvider.class);
 
     private List<TextProvider> textProviders = new ArrayList<TextProvider>();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
index 1bf7ccf..917a376 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionInvocation.java
@@ -25,12 +25,11 @@ import com.opensymphony.xwork2.interceptor.PreResultListener;
 import com.opensymphony.xwork2.ognl.OgnlUtil;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import ognl.MethodFailedException;
 import ognl.NoSuchPropertyException;
-import ognl.OgnlException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -48,7 +47,7 @@ import java.util.Map;
  */
 public class DefaultActionInvocation implements ActionInvocation {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultActionInvocation.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultActionInvocation.class);
 
     protected Object action;
     protected ActionProxy proxy;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
index 92c3870..e66d269 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
@@ -25,11 +25,11 @@ import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.Serializable;
 import java.util.Locale;
@@ -48,7 +48,7 @@ public class DefaultActionProxy implements ActionProxy, Serializable {
 
     private static final long serialVersionUID = 3293074152487468527L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultActionProxy.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultActionProxy.class);
 
     protected Configuration configuration;
     protected ActionConfig config;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
index 0aafd93..b83339c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
@@ -1,7 +1,7 @@
 package com.opensymphony.xwork2;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.Locale;
 
@@ -10,7 +10,7 @@ import java.util.Locale;
  */
 public class DefaultLocaleProvider implements LocaleProvider {
 
-    private final static Logger LOG = LoggerFactory.getLogger(DefaultLocaleProvider.class);
+    private final static Logger LOG = LogManager.getLogger(DefaultLocaleProvider.class);
 
     public Locale getLocale() {
         ActionContext ctx = ActionContext.getContext();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
index bdee961..f1a6c7f 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
@@ -20,19 +20,14 @@ import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.config.entities.InterceptorConfig;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.conversion.TypeConverter;
-import com.opensymphony.xwork2.factory.ActionFactory;
-import com.opensymphony.xwork2.factory.ConverterFactory;
-import com.opensymphony.xwork2.factory.InterceptorFactory;
-import com.opensymphony.xwork2.factory.ResultFactory;
-import com.opensymphony.xwork2.factory.UnknownHandlerFactory;
-import com.opensymphony.xwork2.factory.ValidatorFactory;
+import com.opensymphony.xwork2.factory.*;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.Interceptor;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.validator.Validator;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.Serializable;
 import java.util.Map;
@@ -50,7 +45,7 @@ import java.util.Map;
  */
 public class ObjectFactory implements Serializable {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ObjectFactory.class);
+    private static final Logger LOG = LogManager.getLogger(ObjectFactory.class);
 
     private transient ClassLoader ccl;
     private Container container;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/TextProviderSupport.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/TextProviderSupport.java b/xwork-core/src/main/java/com/opensymphony/xwork2/TextProviderSupport.java
index 462d9d9..9476133 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/TextProviderSupport.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/TextProviderSupport.java
@@ -19,11 +19,7 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.ValueStack;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.ResourceBundle;
+import java.util.*;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkJUnit4TestCase.java b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkJUnit4TestCase.java
index 46f44b6..86a33c6 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkJUnit4TestCase.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkJUnit4TestCase.java
@@ -19,11 +19,7 @@ import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.ConfigurationProvider;
-import com.opensymphony.xwork2.inject.Container;
-import com.opensymphony.xwork2.inject.ContainerBuilder;
-import com.opensymphony.xwork2.inject.Context;
-import com.opensymphony.xwork2.inject.Factory;
-import com.opensymphony.xwork2.inject.Scope;
+import com.opensymphony.xwork2.inject.*;
 import com.opensymphony.xwork2.test.StubConfigurationProvider;
 import com.opensymphony.xwork2.util.XWorkTestCaseHelper;
 import com.opensymphony.xwork2.util.location.LocatableProperties;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
index 042fda4..d853322 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
 import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider;
 import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -38,7 +38,7 @@ import java.util.concurrent.locks.ReentrantLock;
  */
 public class ConfigurationManager {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(ConfigurationManager.class);
+    protected static final Logger LOG = LogManager.getLogger(ConfigurationManager.class);
     protected Configuration configuration;
     protected Lock providerLock = new ReentrantLock();
     private List<ContainerProvider> containerProviders = new CopyOnWriteArrayList<ContainerProvider>();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationUtil.java
index 936afe5..ea84841 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationUtil.java
@@ -16,8 +16,8 @@
 package com.opensymphony.xwork2.config;
 
 import com.opensymphony.xwork2.config.entities.PackageConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -31,7 +31,7 @@ import java.util.StringTokenizer;
  */
 public class ConfigurationUtil {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ConfigurationUtil.class);
+    private static final Logger LOG = LogManager.getLogger(ConfigurationUtil.class);
 
     private ConfigurationUtil() {
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
index eeb530e..7d0a981 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.config.entities;
 
 import com.opensymphony.xwork2.util.location.Located;
 import com.opensymphony.xwork2.util.location.Location;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -38,7 +38,7 @@ import java.util.Map;
  */
 public class PackageConfig extends Located implements Comparable, Serializable, InterceptorLocator {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PackageConfig.class);
+    private static final Logger LOG = LogManager.getLogger(PackageConfig.class);
 
     protected Map<String, ActionConfig> actionConfigs;
     protected Map<String, ResultConfig> globalResultConfigs;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
index 391e254..5a1d33d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
@@ -18,8 +18,8 @@
 package com.opensymphony.xwork2.config.impl;
 
 import com.opensymphony.xwork2.util.PatternMatcher;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.commons.lang3.math.NumberUtils;
 
 import java.io.Serializable;
@@ -42,7 +42,7 @@ public abstract class AbstractMatcher<E> implements Serializable {
     /**
      * <p> The logging instance </p>
      */
-    private static final Logger log = LoggerFactory.getLogger(AbstractMatcher.class);
+    private static final Logger log = LogManager.getLogger(AbstractMatcher.class);
 
     /**
      * <p> Handles all wildcard pattern matching. </p>

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
index fb92d61..d811c43 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
@@ -87,8 +87,8 @@ import com.opensymphony.xwork2.util.ValueStackFactory;
 import com.opensymphony.xwork2.util.fs.DefaultFileManager;
 import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import ognl.PropertyAccessor;
 
@@ -110,7 +110,7 @@ import java.util.TreeSet;
  */
 public class DefaultConfiguration implements Configuration {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(DefaultConfiguration.class);
+    protected static final Logger LOG = LogManager.getLogger(DefaultConfiguration.class);
 
 
     // Programmatic Action Configurations

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
index 5e0b004..f60f7d8 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java
@@ -23,8 +23,8 @@ import com.opensymphony.xwork2.config.entities.InterceptorMapping;
 import com.opensymphony.xwork2.config.entities.InterceptorStackConfig;
 import com.opensymphony.xwork2.interceptor.Interceptor;
 import com.opensymphony.xwork2.util.location.Location;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -42,7 +42,7 @@ import java.util.Map;
  */
 public class InterceptorBuilder {
 
-    private static final Logger LOG = LoggerFactory.getLogger(InterceptorBuilder.class);
+    private static final Logger LOG = LogManager.getLogger(InterceptorBuilder.class);
 
 
     /**

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
index 153ae90..4f6f5ab 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
@@ -35,8 +35,8 @@ import com.opensymphony.xwork2.util.*;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
 import com.opensymphony.xwork2.util.location.Location;
 import com.opensymphony.xwork2.util.location.LocationUtils;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -64,7 +64,7 @@ import java.util.*;
  */
 public class XmlConfigurationProvider implements ConfigurationProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(XmlConfigurationProvider.class);
+    private static final Logger LOG = LogManager.getLogger(XmlConfigurationProvider.class);
 
     private List<Document> documents;
     private Set<String> includedFileNames;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
index 0f10085..d22cf54 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionAnnotationProcessor.java
@@ -8,8 +8,8 @@ import com.opensymphony.xwork2.conversion.annotations.ConversionRule;
 import com.opensymphony.xwork2.conversion.annotations.ConversionType;
 import com.opensymphony.xwork2.conversion.annotations.TypeConversion;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Map;
 
@@ -18,7 +18,7 @@ import java.util.Map;
  */
 public class DefaultConversionAnnotationProcessor implements ConversionAnnotationProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultConversionAnnotationProcessor.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultConversionAnnotationProcessor.class);
 
     private TypeConverterCreator converterCreator;
     private TypeConverterHolder converterHolder;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
index 4537b0e..7fb36d3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionFileProcessor.java
@@ -7,8 +7,8 @@ import com.opensymphony.xwork2.conversion.TypeConverter;
 import com.opensymphony.xwork2.conversion.TypeConverterCreator;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.InputStream;
 import java.util.Map;
@@ -19,7 +19,7 @@ import java.util.Properties;
  */
 public class DefaultConversionFileProcessor implements ConversionFileProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultConversionFileProcessor.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultConversionFileProcessor.class);
 
     private FileManager fileManager;
     private TypeConverterCreator converterCreator;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
index 49c29bb..d251877 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultConversionPropertiesProcessor.java
@@ -7,8 +7,8 @@ import com.opensymphony.xwork2.conversion.TypeConverterCreator;
 import com.opensymphony.xwork2.conversion.TypeConverterHolder;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.IOException;
 import java.net.URL;
@@ -21,7 +21,7 @@ import java.util.Properties;
  */
 public class DefaultConversionPropertiesProcessor implements ConversionPropertiesProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultConversionPropertiesProcessor.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultConversionPropertiesProcessor.class);
 
     private TypeConverterCreator converterCreator;
     private TypeConverterHolder converterHolder;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
index c2c26cd..36c4613 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.util.CreateIfNull;
 import com.opensymphony.xwork2.util.Element;
 import com.opensymphony.xwork2.util.Key;
 import com.opensymphony.xwork2.util.KeyProperty;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionException;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 
@@ -52,7 +52,7 @@ import java.util.Map;
  */
 public class DefaultObjectTypeDeterminer implements ObjectTypeDeterminer {
 
-    protected static final Logger LOG = LoggerFactory.getLogger(DefaultObjectTypeDeterminer.class);
+    protected static final Logger LOG = LogManager.getLogger(DefaultObjectTypeDeterminer.class);
 
     public static final String KEY_PREFIX = "Key_";
     public static final String ELEMENT_PREFIX = "Element_";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/InstantiatingNullHandler.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/InstantiatingNullHandler.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/InstantiatingNullHandler.java
index 188e92d..da49d66 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/InstantiatingNullHandler.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/InstantiatingNullHandler.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.conversion.NullHandler;
 import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 
@@ -72,7 +72,7 @@ public class InstantiatingNullHandler implements NullHandler {
      * @deprecated Use {@link ReflectionContextState#CREATE_NULL_OBJECTS} instead
      */
     @Deprecated public static final String CREATE_NULL_OBJECTS = ReflectionContextState.CREATE_NULL_OBJECTS;
-    private static final Logger LOG = LoggerFactory.getLogger(InstantiatingNullHandler.class);
+    private static final Logger LOG = LogManager.getLogger(InstantiatingNullHandler.class);
     private ReflectionProvider reflectionProvider;
     private ObjectFactory objectFactory;
     private ObjectTypeDeterminer objectTypeDeterminer;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
index a91ca1c..9599b95 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java
@@ -33,8 +33,8 @@ import com.opensymphony.xwork2.util.ClassLoaderUtil;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 import org.apache.commons.lang3.StringUtils;
 
@@ -131,7 +131,7 @@ import java.util.regex.Pattern;
  */
 public class XWorkConverter extends DefaultTypeConverter {
 
-    private static final Logger LOG = LoggerFactory.getLogger(XWorkConverter.class);
+    private static final Logger LOG = LogManager.getLogger(XWorkConverter.class);
 
     public static final String REPORT_CONVERSION_ERRORS = "report.conversion.errors";
     public static final String CONVERSION_PROPERTY_FULLNAME = "conversion.property.fullName";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/metadata/ConversionDescription.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/metadata/ConversionDescription.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/metadata/ConversionDescription.java
index 1234e2e..340dc84 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/metadata/ConversionDescription.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/metadata/ConversionDescription.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.conversion.metadata;
 
 import com.opensymphony.xwork2.conversion.annotations.ConversionRule;
 import com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -55,7 +55,7 @@ public class ConversionDescription {
     public String type = null;
 
     public ConversionDescription() {
-        log = LoggerFactory.getLogger(this.getClass());
+        log = LogManager.getLogger(this.getClass());
     }
 
     /**
@@ -65,7 +65,7 @@ public class ConversionDescription {
      */
     public ConversionDescription(String property) {
         this.property = property;
-        log = LoggerFactory.getLogger(this.getClass());
+        log = LogManager.getLogger(this.getClass());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
index 315d901..73596c8 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java
@@ -3,8 +3,8 @@ package com.opensymphony.xwork2.factory;
 import com.opensymphony.xwork2.conversion.TypeConverter;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Map;
 
@@ -13,7 +13,7 @@ import java.util.Map;
  */
 public class DefaultConverterFactory implements ConverterFactory {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultConverterFactory.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultConverterFactory.class);
 
     private Container container;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java
index a9f90f8..f05a75c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.util.ClearableValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Map;
 
@@ -88,7 +88,7 @@ import java.util.Map;
  */
 public class AliasInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AliasInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(AliasInterceptor.class);
 
     private static final String DEFAULT_ALIAS_KEY = "aliases";
     protected String aliasesKey = DEFAULT_ALIAS_KEY;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
index 36f8c2d..8218e1b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
@@ -22,8 +22,8 @@ import com.opensymphony.xwork2.Unchainable;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 
 import java.util.*;
@@ -100,7 +100,7 @@ import java.util.*;
  */
 public class ChainingInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ChainingInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ChainingInterceptor.class);
 
     private static final String ACTION_ERRORS = "actionErrors";
     private static final String FIELD_ERRORS = "fieldErrors";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
index 9391f1f..4d13f40 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/DefaultWorkflowInterceptor.java
@@ -19,8 +19,8 @@ import com.opensymphony.xwork2.Action;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.interceptor.annotations.InputConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.lang.reflect.Method;
 
@@ -121,7 +121,7 @@ public class DefaultWorkflowInterceptor extends MethodFilterInterceptor {
 
     private static final long serialVersionUID = 7563014655616490865L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultWorkflowInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(DefaultWorkflowInterceptor.class);
 
     private static final Class[] EMPTY_CLASS_ARRAY = new Class[0];
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ExceptionMappingInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ExceptionMappingInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ExceptionMappingInterceptor.java
index fe79fb3..d1a5319 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ExceptionMappingInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ExceptionMappingInterceptor.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.HashMap;
 import java.util.List;
@@ -149,7 +149,7 @@ import java.util.Map;
  */
 public class ExceptionMappingInterceptor extends AbstractInterceptor {
     
-    protected static final Logger LOG = LoggerFactory.getLogger(ExceptionMappingInterceptor.class);
+    protected static final Logger LOG = LogManager.getLogger(ExceptionMappingInterceptor.class);
 
     protected Logger categoryLogger;
     protected boolean logEnabled = false;
@@ -216,7 +216,7 @@ public class ExceptionMappingInterceptor extends AbstractInterceptor {
     	if (logCategory != null) {
         	if (categoryLogger == null) {
         		// init category logger
-        		categoryLogger = LoggerFactory.getLogger(logCategory);
+        		categoryLogger = LogManager.getLogger(logCategory);
         	}
         	doLog(categoryLogger, e);
     	} else {

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
index 3deb268..1d52c9c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java
@@ -18,8 +18,8 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Locale;
 import java.util.Map;
@@ -89,7 +89,7 @@ import java.util.Map;
 public class I18nInterceptor extends AbstractInterceptor {
     private static final long serialVersionUID = 2496830135246700300L;
 
-    protected static final Logger LOG = LoggerFactory.getLogger(I18nInterceptor.class);
+    protected static final Logger LOG = LogManager.getLogger(I18nInterceptor.class);
 
     public static final String DEFAULT_SESSION_ATTRIBUTE = "WW_TRANS_I18N_LOCALE";
     public static final String DEFAULT_PARAMETER = "request_locale";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/LoggingInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/LoggingInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/LoggingInterceptor.java
index a5aa1b2..2ec655e 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/LoggingInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/LoggingInterceptor.java
@@ -16,8 +16,8 @@
 package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 
 /**
@@ -57,7 +57,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  * @author Jason Carreira
  */
 public class LoggingInterceptor extends AbstractInterceptor {
-    private static final Logger LOG = LoggerFactory.getLogger(LoggingInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(LoggingInterceptor.class);
     private static final String FINISH_MESSAGE = "Finishing execution stack for action ";
     private static final String START_MESSAGE = "Starting execution stack for action ";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
index fd44df8..0cdedb0 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
@@ -18,8 +18,8 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Collections;
 import java.util.Set;
@@ -71,7 +71,7 @@ import java.util.Set;
  * @version $Date$ $Id$
  */
 public abstract class MethodFilterInterceptor extends AbstractInterceptor {
-    protected transient Logger log = LoggerFactory.getLogger(getClass());
+    protected transient Logger log = LogManager.getLogger(getClass());
     
     protected Set<String> excludeMethods = Collections.emptySet();
     protected Set<String> includeMethods = Collections.emptySet();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java
index a3d73f8..1e4b036 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java
@@ -17,8 +17,8 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -95,7 +95,7 @@ import java.util.TreeMap;
  */
 public class ParameterFilterInterceptor extends AbstractInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ParameterFilterInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ParameterFilterInterceptor.class);
 
     private Collection<String> allowed;
     private Collection<String> blocked;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java
index f79e21a..523831c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptor.java
@@ -18,8 +18,8 @@ package com.opensymphony.xwork2.interceptor;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Collections;
 import java.util.Map;
@@ -79,7 +79,7 @@ import java.util.Set;
  */
 public class ParameterRemoverInterceptor extends AbstractInterceptor {
 
-	private static final Logger LOG = LoggerFactory.getLogger(ParameterRemoverInterceptor.class);
+	private static final Logger LOG = LogManager.getLogger(ParameterRemoverInterceptor.class);
 
 	private static final long serialVersionUID = 1;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
index 8317feb..d2074ac 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
@@ -29,8 +29,8 @@ import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.MemberAccessValueStack;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 
 import java.util.Collection;
@@ -135,7 +135,7 @@ import java.util.TreeMap;
  */
 public class ParametersInterceptor extends MethodFilterInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ParametersInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(ParametersInterceptor.class);
 
     protected static final int PARAM_NAME_MAX_LENGTH = 100;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
index bf15eeb..aa1540b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrefixMethodInvocationUtil.java
@@ -16,8 +16,8 @@
 package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -63,7 +63,7 @@ import java.lang.reflect.Method;
  */
 public class PrefixMethodInvocationUtil {
 	
-	private static final Logger LOG = LoggerFactory.getLogger(PrefixMethodInvocationUtil.class);
+	private static final Logger LOG = LogManager.getLogger(PrefixMethodInvocationUtil.class);
 
     private static final String DEFAULT_INVOCATION_METHODNAME = "execute";
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrepareInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrepareInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrepareInterceptor.java
index 4d0822f..6a327c3 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrepareInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/PrepareInterceptor.java
@@ -18,8 +18,8 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.Preparable;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.lang.reflect.InvocationTargetException;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java
index 8639346..67e121c 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java
@@ -24,8 +24,8 @@ import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.config.entities.Parameterizable;
 import com.opensymphony.xwork2.util.*;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 import java.util.Collections;
 import java.util.Map;
@@ -87,7 +87,7 @@ public class StaticParametersInterceptor extends AbstractInterceptor {
 
     static boolean devMode = false;
 
-    private static final Logger LOG = LoggerFactory.getLogger(StaticParametersInterceptor.class);
+    private static final Logger LOG = LogManager.getLogger(StaticParametersInterceptor.class);
 
     private ValueStackFactory valueStackFactory;
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/TimerInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/TimerInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/TimerInterceptor.java
index ad53d80..a52c092 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/TimerInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/TimerInterceptor.java
@@ -16,8 +16,8 @@
 package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * <!-- START SNIPPET: description -->
@@ -92,7 +92,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
  * @author Claus Ibsen
  */
 public class TimerInterceptor extends AbstractInterceptor {
-    protected static final Logger LOG = LoggerFactory.getLogger(TimerInterceptor.class);
+    protected static final Logger LOG = LogManager.getLogger(TimerInterceptor.class);
 
     protected Logger categoryLogger;
     protected String logCategory;
@@ -175,7 +175,7 @@ public class TimerInterceptor extends AbstractInterceptor {
         if (logCategory != null) {
             if (categoryLogger == null) {
                 // init category logger
-                categoryLogger = LoggerFactory.getLogger(logCategory);
+                categoryLogger = LogManager.getLogger(logCategory);
                 if (logLevel == null) {
                     logLevel = "info"; // use info as default if not provided
                 }

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
index 63c45fe..a67ede9 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
@@ -23,8 +23,8 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionException;
 import ognl.ClassResolver;
 import ognl.Ognl;
@@ -57,7 +57,7 @@ import java.util.regex.Pattern;
  */
 public class OgnlUtil {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OgnlUtil.class);
+    private static final Logger LOG = LogManager.getLogger(OgnlUtil.class);
     private ConcurrentMap<String, Object> expressions = new ConcurrentHashMap<String, Object>();
     private final ConcurrentMap<Class, BeanInfo> beanInfoCache = new ConcurrentHashMap<Class, BeanInfo>();
     private TypeConverter defaultConverter;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
index 1b09ef6..0f1c048 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.util.ClearableValueStack;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.MemberAccessValueStack;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.logging.LoggerUtils;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 import ognl.*;
@@ -55,7 +55,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS
     private static final long serialVersionUID = 370737852934925530L;
 
     private static final String MAP_IDENTIFIER_KEY = "com.opensymphony.xwork2.util.OgnlValueStack.MAP_IDENTIFIER_KEY";
-    private static final Logger LOG = LoggerFactory.getLogger(OgnlValueStack.class);
+    private static final Logger LOG = LogManager.getLogger(OgnlValueStack.class);
 
     CompoundRoot root;
     transient Map<String, Object> context;

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
index eb586e5..040077d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
@@ -15,8 +15,8 @@
  */
 package com.opensymphony.xwork2.ognl;
 
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import ognl.DefaultMemberAccess;
 
 import java.lang.reflect.Member;
@@ -33,7 +33,7 @@ import java.util.regex.Pattern;
  */
 public class SecurityMemberAccess extends DefaultMemberAccess {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SecurityMemberAccess.class);
+    private static final Logger LOG = LogManager.getLogger(SecurityMemberAccess.class);
 
     private final boolean allowStaticMethodAccess;
     private Set<Pattern> excludeProperties = Collections.emptySet();

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
index 27352b9..bad1fc0 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.ognl.OgnlValueStack;
 import com.opensymphony.xwork2.util.CompoundRoot;
 import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import ognl.*;
 
 import java.beans.IntrospectionException;
@@ -56,7 +56,7 @@ public class CompoundRootAccessor implements PropertyAccessor, MethodAccessor, C
         return null;
     }
 
-    private final static Logger LOG = LoggerFactory.getLogger(CompoundRootAccessor.class);
+    private final static Logger LOG = LogManager.getLogger(CompoundRootAccessor.class);
     private final static Class[] EMPTY_CLASS_ARRAY = new Class[0];
     private static Map<MethodCall, Boolean> invalidMethods = new ConcurrentHashMap<MethodCall, Boolean>();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkCollectionPropertyAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkCollectionPropertyAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkCollectionPropertyAccessor.java
index aed7949..a656634 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkCollectionPropertyAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkCollectionPropertyAccessor.java
@@ -21,8 +21,8 @@ import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.ognl.OgnlUtil;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 
 import ognl.ObjectPropertyAccessor;
@@ -41,7 +41,7 @@ import java.util.Map;
  */
 public class XWorkCollectionPropertyAccessor extends SetPropertyAccessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(XWorkCollectionPropertyAccessor.class);
+    private static final Logger LOG = LogManager.getLogger(XWorkCollectionPropertyAccessor.class);
     private static final String CONTEXT_COLLECTION_MAP = "xworkCollectionPropertyAccessorContextSetMap";
 
     public static final String KEY_PROPERTY_FOR_CREATION = "makeNew";

http://git-wip-us.apache.org/repos/asf/struts/blob/95805e54/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java
index 576ab3d..d752216 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java
@@ -20,8 +20,8 @@ import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 import ognl.MapPropertyAccessor;
 import ognl.OgnlException;
@@ -36,7 +36,7 @@ import java.util.Map;
  */
 public class XWorkMapPropertyAccessor extends MapPropertyAccessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(XWorkMapPropertyAccessor.class);
+    private static final Logger LOG = LogManager.getLogger(XWorkMapPropertyAccessor.class);
 
     private static final String[] INDEX_ACCESS_PROPS = new String[]
             {"size", "isEmpty", "keys", "values"};