WW-4492 Add support for Log4J2 as a struts and xwork logging backend

This commit is contained in:
Johannes Geppert
2015-04-18 12:29:13 +02:00
parent 75027a3cb8
commit 48c0764f73
5 changed files with 182 additions and 2 deletions
+8 -2
View File
@@ -857,12 +857,18 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.2</version>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
+7
View File
@@ -219,6 +219,13 @@
<artifactId>slf4j-simple</artifactId>
<optional>true</optional>
</dependency>
<!-- Log4J2 support -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,121 @@
/*
* 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.log4j2;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerUtils;
/**
* Simple logger that delegates to log4j2 logging
*/
public class Log4j2Logger implements Logger {
private org.apache.logging.log4j.Logger log;
public Log4j2Logger(org.apache.logging.log4j.Logger log) {
this.log = log;
}
public void error(String msg, String... args) {
log.error(LoggerUtils.format(msg, args));
}
public void error(String msg, Object... 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, Object... 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, Object... 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, Object... 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.fatal(LoggerUtils.format(msg, args));
}
public void fatal(String msg, Throwable ex, String... args) {
log.fatal(LoggerUtils.format(msg, args), ex);
}
public boolean isErrorEnabled() {
return log.isErrorEnabled();
}
public boolean isFatalEnabled() {
return log.isFatalEnabled();
}
public boolean isWarnEnabled() {
return log.isWarnEnabled();
}
}
@@ -0,0 +1,41 @@
/*
* 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.log4j2;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
/**
* Creates log4j2-logging-backed loggers
*
* You can use the same to explicit tell the framework which implementation to use and don't depend on class discovery:
* <pre>
* -Dxwork.loggerFactory=com.opensymphony.xwork2.util.logging.log4j2.Log4j2LoggerFactory
* </pre>
*/
public class Log4j2LoggerFactory extends LoggerFactory {
@Override
protected Logger getLoggerImpl(Class<?> cls) {
return new Log4j2Logger(org.apache.logging.log4j.LogManager.getLogger(cls));
}
@Override
protected Logger getLoggerImpl(String name) {
return new Log4j2Logger(org.apache.logging.log4j.LogManager.getLogger(name));
}
}
@@ -20,6 +20,11 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
/**
* Creates slf4j-logging-backed loggers
*
* You can use the same to explicit tell the framework which implementation to use and don't depend on class discovery:
* <pre>
* -Dxwork.loggerFactory=com.opensymphony.xwork2.util.logging.slf4j.Slf4jLoggerFactory
* </pre>
*/
public class Slf4jLoggerFactory extends LoggerFactory {