blob: 40f45af5ec937204dcc3e2b711a3bc3fbad154d2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.axis2.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* The OnDemandLogger will defer the creation of the
* actual Log object until it is needed. This may be necessary
* to ensure that the Log implementation is consistent with the Log
* interface in the current class loader.
*/
public class OnDemandLogger {
private final Class c;
private Log _log = null;
/**
* Create an on-demand logger for the given class.
* @param c
*/
public OnDemandLogger(Class c){
this.c = c;
}
/** Get or create Log on demand
* @return
*/
private Log getLog(){
if(c==null){
throw new RuntimeException("Unable to load Logging, Logging class not found");
}
if (_log == null) {
_log = LogFactory.getLog(c);
if (_log.isDebugEnabled()) {
_log.debug("OnDemandLogger initialized for " + c + " is:" + _log);
}
}
return _log;
}
/**
* reset the Log object to force a reload
*/
public void resetLog() {
if (_log != null && _log.isDebugEnabled()) {
_log.debug("OnDemandLogger reset for " + c);
}
_log = null;
}
/**
* @return true if Log is set
*/
public boolean hasLog() {
return _log != null;
}
public void debug(Object arg0, Throwable arg1) {
getLog().debug(arg0, arg1);
}
public void debug(Object arg0) {
getLog().debug(arg0);
}
public void error(Object arg0, Throwable arg1) {
getLog().error(arg0, arg1);
}
public void error(Object arg0) {
getLog().error(arg0);
}
public void fatal(Object arg0, Throwable arg1) {
getLog().fatal(arg0, arg1);
}
public void fatal(Object arg0) {
getLog().fatal(arg0);
}
public void info(Object arg0, Throwable arg1) {
getLog().info(arg0, arg1);
}
public void info(Object arg0) {
getLog().info(arg0);
}
public boolean isDebugEnabled() {
return getLog().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLog().isErrorEnabled();
}
public boolean isFatalEnabled() {
return getLog().isFatalEnabled();
}
public boolean isInfoEnabled() {
return getLog().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLog().isTraceEnabled();
}
public boolean isWarnEnabled() {
return getLog().isWarnEnabled();
}
public void trace(Object arg0, Throwable arg1) {
getLog().trace(arg0, arg1);
}
public void trace(Object arg0) {
getLog().trace(arg0);
}
public void warn(Object arg0, Throwable arg1) {
getLog().warn(arg0, arg1);
}
public void warn(Object arg0) {
getLog().warn(arg0);
}
}