You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (JIRA)" <ji...@apache.org> on 2013/02/21 08:58:13 UTC
[jira] [Updated] (WW-3988) Commons Logging may not work in XWork
from issue WW-3959
[ https://issues.apache.org/jira/browse/WW-3988?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lukasz Lenart updated WW-3988:
------------------------------
Fix Version/s: 2.3.12
> Commons Logging may not work in XWork from issue WW-3959
> --------------------------------------------------------
>
> Key: WW-3988
> URL: https://issues.apache.org/jira/browse/WW-3988
> Project: Struts 2
> Issue Type: Bug
> Components: Integration
> Affects Versions: 2.3.11
> Reporter: Erik Berg
> Labels: logging, slf4j, xwork
> Fix For: 2.3.12
>
>
> Support for SLF4J in XWork added in WW-3959 can break Commons Logging since it looks for SLF4J in the classpath first. If found, it assumes Struts/XWork is configured to use SLF4J and creates an SLF4J log factory.
> The problem with this approach is that other libraries in a web application may have a dependency on SLF4J, hence it is found in the classpath, even when it is not configured as the logging factory for Struts.
> {code:title=LoggerFactory.java|borderStyle=dashed}
> Index: LoggerFactory.java
> ===================================================================
> --- LoggerFactory.java (revision 911280)
> +++ LoggerFactory.java (revision 1431482)
> @@ -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 @@
> 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;
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira