Repository: struts Updated Branches: refs/heads/develop 75027a3cb -> 48c0764f7
WW-4492 Add support for Log4J2 as a struts and xwork logging backend Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/48c0764f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/48c0764f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/48c0764f Branch: refs/heads/develop Commit: 48c0764f73def8f5a7e8bd5765b089519a787e1f Parents: 75027a3 Author: Johannes Geppert <joh...@gmail.com> Authored: Sat Apr 18 12:29:13 2015 +0200 Committer: Johannes Geppert <joh...@gmail.com> Committed: Sat Apr 18 12:29:13 2015 +0200 ---------------------------------------------------------------------- pom.xml | 10 +- xwork-core/pom.xml | 7 ++ .../util/logging/log4j2/Log4j2Logger.java | 121 +++++++++++++++++++ .../logging/log4j2/Log4j2LoggerFactory.java | 41 +++++++ .../util/logging/slf4j/Slf4jLoggerFactory.java | 5 + 5 files changed, 182 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/48c0764f/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index fc2121c..7aaaefc 100644 --- a/pom.xml +++ b/pom.xml @@ -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> http://git-wip-us.apache.org/repos/asf/struts/blob/48c0764f/xwork-core/pom.xml ---------------------------------------------------------------------- diff --git a/xwork-core/pom.xml b/xwork-core/pom.xml index 07bb5ce..b48598e 100644 --- a/xwork-core/pom.xml +++ b/xwork-core/pom.xml @@ -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> http://git-wip-us.apache.org/repos/asf/struts/blob/48c0764f/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 new file mode 100644 index 0000000..44a10fd --- /dev/null +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2Logger.java @@ -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(); + } + +} http://git-wip-us.apache.org/repos/asf/struts/blob/48c0764f/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 new file mode 100644 index 0000000..73b8898 --- /dev/null +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/logging/log4j2/Log4j2LoggerFactory.java @@ -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)); + } + +} http://git-wip-us.apache.org/repos/asf/struts/blob/48c0764f/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 f50cfac..0b85fbd 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 @@ -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 {