/*
* Copyright 2013 Matt Sicker and Contributors
*
* 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 atg.tools.dynunit.nucleus.logging;
import atg.nucleus.logging.TraceApplicationLogging;
import atg.nucleus.logging.VariableArgumentApplicationLogging;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.FormattedMessageFactory;
import org.apache.logging.log4j.message.LocalizedMessage;
import java.util.ResourceBundle;
/**
* Implementation of ApplicationLogging including trace level, variable argument methods, and i18n resource bundles.
* Note that this implementation of VariableArgumentApplicationLogging does <em>not</em> use the same logic as the
* bloated version that comes with ATG that supports its own Unified EL-like formatting string. Instead, this uses
* the {@link org.apache.logging.log4j.message.FormattedMessageFactory} class to figure out how to apply arguments
* to a format string. Naturally, this can be overridden by constructing an instance using a given Logger object to
* wrap.
*
* @author msicker
* @version 1.0.0
*/
public class ApacheLogging
implements VariableArgumentApplicationLogging, TraceApplicationLogging {
private Logger logger;
private boolean loggingTrace;
private boolean loggingDebug;
private boolean loggingInfo;
private boolean loggingWarning;
private boolean loggingError;
public ApacheLogging() {
logger = LogManager.getRootLogger();
}
public ApacheLogging(final String name) {
logger = LogManager.getLogger(name, new FormattedMessageFactory());
}
public ApacheLogging(final Class<?> datClass) {
logger = LogManager.getLogger(datClass, new FormattedMessageFactory());
}
public ApacheLogging(final Logger logger) {
this.logger = logger;
}
@Override
public boolean isLoggingTrace() {
return loggingTrace || logger.isTraceEnabled();
}
@Override
public void setLoggingTrace(final boolean loggingTrace) {
this.loggingTrace = loggingTrace;
}
@Override
public void logTrace(final String message) {
logger.trace(message);
}
@Override
public void logTrace(final Throwable throwable) {
logger.trace("", throwable);
}
@Override
public void logTrace(final String message, final Throwable throwable) {
logger.trace(message, throwable);
}
@Override
public void vlogTrace(final Throwable throwable,
final ResourceBundle resourceBundle,
final String key,
final Object... args) {
logger.trace(new LocalizedMessage(resourceBundle, key, args), throwable);
}
@Override
public void vlogTrace(final ResourceBundle resourceBundle, final String key, final Object... args) {
logger.trace(new LocalizedMessage(resourceBundle, key, args));
}
@Override
public void vlogTrace(final Throwable throwable, final String format, final Object... args) {
logTrace(throwable);
logger.trace(format, args);
}
@Override
public void vlogTrace(final String format, final Object... args) {
logger.trace(format, args);
}
@Override
public boolean isLoggingDebug() {
return loggingDebug || logger.isDebugEnabled();
}
@Override
public void setLoggingDebug(final boolean loggingDebug) {
this.loggingDebug = loggingDebug;
}
@Override
public void logDebug(final String message) {
logger.debug(message);
}
@Override
public void logDebug(final Throwable throwable) {
logger.debug("", throwable);
}
@Override
public void logDebug(final String message, final Throwable throwable) {
logger.debug(message, throwable);
}
@Override
public void vlogDebug(final Throwable throwable,
final ResourceBundle resourceBundle,
final String key,
final Object... args) {
logger.debug(new LocalizedMessage(resourceBundle, key, args), throwable);
}
@Override
public void vlogDebug(final ResourceBundle resourceBundle, final String key, final Object... args) {
logger.debug(new LocalizedMessage(resourceBundle, key, args));
}
@Override
public void vlogDebug(final Throwable throwable, final String format, final Object... args) {
logDebug(throwable);
logger.debug(format, args);
}
@Override
public void vlogDebug(final String format, final Object... args) {
logger.debug(format, args);
}
@Override
public boolean isLoggingInfo() {
return loggingInfo || logger.isInfoEnabled();
}
@Override
public void setLoggingInfo(final boolean loggingInfo) {
this.loggingInfo = loggingInfo;
}
@Override
public void logInfo(final String message) {
logger.info(message);
}
@Override
public void logInfo(final Throwable throwable) {
logger.info("", throwable);
}
@Override
public void logInfo(final String message, final Throwable throwable) {
logger.info(message, throwable);
}
@Override
public void vlogInfo(final Throwable throwable,
final ResourceBundle resourceBundle,
final String key,
final Object... args) {
logger.info(new LocalizedMessage(resourceBundle, key, args), throwable);
}
@Override
public void vlogInfo(final ResourceBundle resourceBundle, final String key, final Object... args) {
logger.info(new LocalizedMessage(resourceBundle, key, args));
}
@Override
public void vlogInfo(final Throwable throwable, final String format, final Object... args) {
logInfo(throwable);
logger.info(format, args);
}
@Override
public void vlogInfo(final String format, final Object... args) {
logger.info(format, args);
}
@Override
public boolean isLoggingWarning() {
return loggingWarning || logger.isWarnEnabled();
}
@Override
public void setLoggingWarning(final boolean loggingWarning) {
this.loggingWarning = loggingWarning;
}
@Override
public void logWarning(final String message) {
logger.warn(message);
}
@Override
public void logWarning(final Throwable throwable) {
logger.warn("", throwable);
}
@Override
public void logWarning(final String message, final Throwable throwable) {
logger.warn(message, throwable);
}
@Override
public void vlogWarning(final Throwable throwable,
final ResourceBundle resourceBundle,
final String key,
final Object... args) {
logger.warn(new LocalizedMessage(resourceBundle, key, args), throwable);
}
@Override
public void vlogWarning(final ResourceBundle resourceBundle, final String key, final Object... args) {
logger.warn(new LocalizedMessage(resourceBundle, key, args));
}
@Override
public void vlogWarning(final Throwable throwable, final String format, final Object... args) {
logWarning(throwable);
logger.warn(format, args);
}
@Override
public void vlogWarning(final String format, final Object... args) {
logger.warn(format, args);
}
@Override
public boolean isLoggingError() {
return loggingError || logger.isErrorEnabled();
}
@Override
public void setLoggingError(final boolean loggingError) {
this.loggingError = loggingError;
}
@Override
public void logError(final String message) {
logger.error(message);
}
@Override
public void logError(final Throwable throwable) {
logger.error("", throwable);
}
@Override
public void logError(final String message, final Throwable throwable) {
logger.error(message, throwable);
}
@Override
public void vlogError(final Throwable throwable,
final ResourceBundle resourceBundle,
final String key,
final Object... args) {
logger.error(new LocalizedMessage(resourceBundle, key, args), throwable);
}
@Override
public void vlogError(final ResourceBundle resourceBundle, final String key, final Object... args) {
logger.error(new LocalizedMessage(resourceBundle, key, args));
}
@Override
public void vlogError(final Throwable throwable, final String format, final Object... args) {
logError(throwable);
logger.error(format, args);
}
@Override
public void vlogError(final String format, final Object... args) {
logger.error(format, args);
}
}