Skip to content

Commit

Permalink
WW-4492 Add support for Log4J2 as a struts and xwork logging backend
Browse files Browse the repository at this point in the history
  • Loading branch information
jogep committed Apr 18, 2015
1 parent 75027a3 commit 48c0764
Show file tree
Hide file tree
Showing 5 changed files with 182 additions and 2 deletions.
10 changes: 8 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
7 changes: 7 additions & 0 deletions xwork-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Original file line number Diff line number Diff line change
@@ -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();
}

}
Original file line number Diff line number Diff line change
@@ -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));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@

/**
* 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 {

Expand Down

0 comments on commit 48c0764

Please sign in to comment.