Author: jogep Date: Thu Jan 10 16:26:26 2013 New Revision: 1431482 URL: http://svn.apache.org/viewvc?rev=1431482&view=rev Log: WW-3959 Support for Slf4j as optional XWork Logging Backend
Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java Modified: struts/struts2/trunk/pom.xml struts/struts2/trunk/xwork-core/pom.xml struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/LoggerFactory.java Modified: struts/struts2/trunk/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/pom.xml?rev=1431482&r1=1431481&r2=1431482&view=diff ============================================================================== --- struts/struts2/trunk/pom.xml (original) +++ struts/struts2/trunk/pom.xml Thu Jan 10 16:26:26 2013 @@ -652,6 +652,17 @@ </dependency> <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.2</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>1.7.2</version> + </dependency> + + <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>5.1</version> Modified: struts/struts2/trunk/xwork-core/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/pom.xml?rev=1431482&r1=1431481&r2=1431482&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/pom.xml (original) +++ struts/struts2/trunk/xwork-core/pom.xml Thu Jan 10 16:26:26 2013 @@ -268,6 +268,17 @@ <scope>test</scope> </dependency> + <!-- SLF4J support --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <optional>true</optional> + </dependency> </dependencies> </project> 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=1431482&r1=1431481&r2=1431482&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 Thu Jan 10 16:26:26 2013 @@ -16,6 +16,7 @@ package com.opensymphony.xwork2.util.logging; import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory; +import com.opensymphony.xwork2.util.logging.slf4j.Slf4jLoggerFactory; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -59,11 +60,17 @@ public abstract class LoggerFactory { try { if (factory == null) { try { - Class.forName("org.apache.commons.logging.LogFactory"); - factory = new com.opensymphony.xwork2.util.logging.commons.CommonsLoggerFactory(); + Class.forName("org.slf4j.LoggerFactory"); + factory = new Slf4jLoggerFactory(); } catch (ClassNotFoundException ex) { - // commons logging not found, falling back to jdk logging - factory = new JdkLoggerFactory(); + //slf4j not found try commons LogFactory + try { + Class.forName("org.apache.commons.logging.LogFactory"); + factory = new com.opensymphony.xwork2.util.logging.commons.CommonsLoggerFactory(); + } catch (ClassNotFoundException cnfex) { + // commons logging not found, falling back to jdk logging + factory = new JdkLoggerFactory(); + } } } return factory; Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java?rev=1431482&view=auto ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java (added) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLogger.java Thu Jan 10 16:26:26 2013 @@ -0,0 +1,108 @@ +/* + * Copyright 2002-2006,2009 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.opensymphony.xwork2.util.logging.slf4j; + +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerUtils; + +/** + * Simple logger that delegates to slf4j logging + */ +public class Slf4jLogger implements Logger { + + private org.slf4j.Logger log; + + public Slf4jLogger(org.slf4j.Logger log) { + this.log = log; + } + + public void error(String msg, String... args) { + log.error(LoggerUtils.format(msg, args)); + } + + public void error(String msg, Throwable ex, String... args) { + log.error(LoggerUtils.format(msg, args), ex); + } + + public void info(String msg, String... args) { + log.info(LoggerUtils.format(msg, args)); + } + + public void info(String msg, Throwable ex, String... args) { + log.info(LoggerUtils.format(msg, args), ex); + } + + + + public boolean isInfoEnabled() { + return log.isInfoEnabled(); + } + + public void warn(String msg, String... args) { + log.warn(LoggerUtils.format(msg, args)); + } + + public void warn(String msg, Throwable ex, String... args) { + log.warn(LoggerUtils.format(msg, args), ex); + } + + public boolean isDebugEnabled() { + return log.isDebugEnabled(); + } + + public void debug(String msg, String... args) { + log.debug(LoggerUtils.format(msg, args)); + } + + public void debug(String msg, Throwable ex, String... args) { + log.debug(LoggerUtils.format(msg, args), ex); + } + + public boolean isTraceEnabled() { + return log.isTraceEnabled(); + } + + public void trace(String msg, String... args) { + log.trace(LoggerUtils.format(msg, args)); + } + + public void trace(String msg, Throwable ex, String... args) { + log.trace(LoggerUtils.format(msg, args), ex); + } + + + public void fatal(String msg, String... args) { + log.error(LoggerUtils.format(msg, args)); + } + + public void fatal(String msg, Throwable ex, String... args) { + log.error(LoggerUtils.format(msg, args), ex); + } + + public boolean isErrorEnabled() { + return log.isErrorEnabled(); + } + + /** Fatal is not support by Slf4j */ + public boolean isFatalEnabled() { + return log.isErrorEnabled(); + } + + public boolean isWarnEnabled() { + return log.isWarnEnabled(); + } + +} Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java?rev=1431482&view=auto ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java (added) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/slf4j/Slf4jLoggerFactory.java Thu Jan 10 16:26:26 2013 @@ -0,0 +1,36 @@ +/* + * Copyright 2002-2006,2009 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.opensymphony.xwork2.util.logging.slf4j; + +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; + +/** + * Creates slf4j-logging-backed loggers + */ +public class Slf4jLoggerFactory extends LoggerFactory { + + @Override + protected Logger getLoggerImpl(Class<?> cls) { + return new Slf4jLogger(org.slf4j.LoggerFactory.getLogger(cls)); + } + + @Override + protected Logger getLoggerImpl(String name) { + return new Slf4jLogger(org.slf4j.LoggerFactory.getLogger(name)); + } + +}