You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2013/03/22 12:46:48 UTC

svn commit: r1459734 - in /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2: XWorkConstants.java util/logging/LoggerFactory.java

Author: lukaszlenart
Date: Fri Mar 22 11:46:48 2013
New Revision: 1459734

URL: http://svn.apache.org/r1459734
Log:
WW-3988 Adds xwor.loggerFactory to allow define which implementation to use

Modified:
    struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java
    struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java

Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java?rev=1459734&r1=1459733&r2=1459734&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java Fri Mar 22 11:46:48 2013
@@ -15,4 +15,5 @@ public final class XWorkConstants {
     public static final String ENABLE_OGNL_EXPRESSION_CACHE = "enableOGNLExpressionCache";
     public static final String RELOAD_XML_CONFIGURATION = "reloadXmlConfiguration";
     public static final String ALLOW_STATIC_METHOD_ACCESS = "allowStaticMethodAccess";
+    public static final String XWORK_LOGGER_FACTORY = "xwork.loggerFactory";
 }

Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java?rev=1459734&r1=1459733&r2=1459734&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java Fri Mar 22 11:46:48 2013
@@ -15,6 +15,8 @@
  */
 package com.opensymphony.xwork2.util.logging;
 
+import com.opensymphony.xwork2.XWorkConstants;
+import com.opensymphony.xwork2.XWorkException;
 import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory;
 import com.opensymphony.xwork2.util.logging.slf4j.Slf4jLoggerFactory;
 
@@ -25,7 +27,7 @@ import java.util.concurrent.locks.Reentr
  * Creates loggers.  Static accessor will lazily try to decide on the best factory if none specified.
  */
 public abstract class LoggerFactory {
-    
+
     private static final ReadWriteLock lock = new ReentrantReadWriteLock();
     private static LoggerFactory factory;
     
@@ -59,6 +61,16 @@ public abstract class LoggerFactory {
         lock.writeLock().lock();
         try {
             if (factory == null) {
+                String userLoggerFactory = System.getProperty(XWorkConstants.XWORK_LOGGER_FACTORY);
+                if (userLoggerFactory != null) {
+                    try {
+                        Class clazz = Class.forName(userLoggerFactory);
+                        factory = (LoggerFactory) clazz.newInstance();
+                    } catch (Exception e) {
+                        throw new XWorkException("System property [" + XWorkConstants.XWORK_LOGGER_FACTORY +
+                                "] was defined as [" + userLoggerFactory + "] but there is a problem to use that LoggerFactory!", e);
+                    }
+                }
                 try {
                     Class.forName("org.apache.commons.logging.LogFactory");
                     factory = new com.opensymphony.xwork2.util.logging.commons.CommonsLoggerFactory();