| /* |
| * Copyright 2001-2004 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 org.apache.commons.logging.impl; |
| |
| |
| import java.io.Serializable; |
| import java.util.logging.Level; |
| import java.util.logging.Logger; |
| |
| import org.apache.commons.logging.Log; |
| |
| |
| /** |
| * <p>Implementation of the <code>org.apache.commons.logging.Log</code> |
| * interface that wraps the standard JDK logging mechanisms that were |
| * introduced in the Merlin release (JDK 1.4).</p> |
| * |
| * @author <a href="mailto:sanders@apache.org">Scott Sanders</a> |
| * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a> |
| * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> |
| * @version $Revision: 370652 $ $Date: 2006-01-19 22:23:48 +0000 (Thu, 19 Jan 2006) $ |
| */ |
| |
| public class Jdk14Logger implements Log, Serializable { |
| |
| /** |
| * This member variable simply ensures that any attempt to initialise |
| * this class in a pre-1.4 JVM will result in an ExceptionInInitializerError. |
| * It must not be private, as an optimising compiler could detect that it |
| * is not used and optimise it away. |
| */ |
| protected static final Level dummyLevel = Level.FINE; |
| |
| // ----------------------------------------------------------- Constructors |
| |
| |
| /** |
| * Construct a named instance of this Logger. |
| * |
| * @param name Name of the logger to be constructed |
| */ |
| public Jdk14Logger(String name) { |
| |
| this.name = name; |
| logger = getLogger(); |
| |
| } |
| |
| |
| // ----------------------------------------------------- Instance Variables |
| |
| |
| /** |
| * The underlying Logger implementation we are using. |
| */ |
| protected transient Logger logger = null; |
| |
| |
| /** |
| * The name of the logger we are wrapping. |
| */ |
| protected String name = null; |
| |
| |
| // --------------------------------------------------------- Public Methods |
| |
| private void log( Level level, String msg, Throwable ex ) { |
| |
| Logger logger = getLogger(); |
| if (logger.isLoggable(level)) { |
| // Hack (?) to get the stack trace. |
| Throwable dummyException=new Throwable(); |
| StackTraceElement locations[]=dummyException.getStackTrace(); |
| // Caller will be the third element |
| String cname="unknown"; |
| String method="unknown"; |
| if( locations!=null && locations.length >2 ) { |
| StackTraceElement caller=locations[2]; |
| cname=caller.getClassName(); |
| method=caller.getMethodName(); |
| } |
| if( ex==null ) { |
| logger.logp( level, cname, method, msg ); |
| } else { |
| logger.logp( level, cname, method, msg, ex ); |
| } |
| } |
| |
| } |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.FINE</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#debug(Object) |
| */ |
| public void debug(Object message) { |
| log(Level.FINE, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.FINE</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#debug(Object, Throwable) |
| */ |
| public void debug(Object message, Throwable exception) { |
| log(Level.FINE, String.valueOf(message), exception); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.SEVERE</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#error(Object) |
| */ |
| public void error(Object message) { |
| log(Level.SEVERE, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.SEVERE</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#error(Object, Throwable) |
| */ |
| public void error(Object message, Throwable exception) { |
| log(Level.SEVERE, String.valueOf(message), exception); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.SEVERE</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#fatal(Object) |
| */ |
| public void fatal(Object message) { |
| log(Level.SEVERE, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.SEVERE</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#fatal(Object, Throwable) |
| */ |
| public void fatal(Object message, Throwable exception) { |
| log(Level.SEVERE, String.valueOf(message), exception); |
| } |
| |
| |
| /** |
| * Return the native Logger instance we are using. |
| */ |
| public Logger getLogger() { |
| if (logger == null) { |
| logger = Logger.getLogger(name); |
| } |
| return (logger); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.INFO</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#info(Object) |
| */ |
| public void info(Object message) { |
| log(Level.INFO, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.INFO</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#info(Object, Throwable) |
| */ |
| public void info(Object message, Throwable exception) { |
| log(Level.INFO, String.valueOf(message), exception); |
| } |
| |
| |
| /** |
| * Is debug logging currently enabled? |
| */ |
| public boolean isDebugEnabled() { |
| return (getLogger().isLoggable(Level.FINE)); |
| } |
| |
| |
| /** |
| * Is error logging currently enabled? |
| */ |
| public boolean isErrorEnabled() { |
| return (getLogger().isLoggable(Level.SEVERE)); |
| } |
| |
| |
| /** |
| * Is fatal logging currently enabled? |
| */ |
| public boolean isFatalEnabled() { |
| return (getLogger().isLoggable(Level.SEVERE)); |
| } |
| |
| |
| /** |
| * Is info logging currently enabled? |
| */ |
| public boolean isInfoEnabled() { |
| return (getLogger().isLoggable(Level.INFO)); |
| } |
| |
| |
| /** |
| * Is trace logging currently enabled? |
| */ |
| public boolean isTraceEnabled() { |
| return (getLogger().isLoggable(Level.FINEST)); |
| } |
| |
| |
| /** |
| * Is warn logging currently enabled? |
| */ |
| public boolean isWarnEnabled() { |
| return (getLogger().isLoggable(Level.WARNING)); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.FINEST</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#trace(Object) |
| */ |
| public void trace(Object message) { |
| log(Level.FINEST, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.FINEST</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#trace(Object, Throwable) |
| */ |
| public void trace(Object message, Throwable exception) { |
| log(Level.FINEST, String.valueOf(message), exception); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.WARNING</code>. |
| * |
| * @param message to log |
| * @see org.apache.commons.logging.Log#warn(Object) |
| */ |
| public void warn(Object message) { |
| log(Level.WARNING, String.valueOf(message), null); |
| } |
| |
| |
| /** |
| * Logs a message with <code>java.util.logging.Level.WARNING</code>. |
| * |
| * @param message to log |
| * @param exception log this cause |
| * @see org.apache.commons.logging.Log#warn(Object, Throwable) |
| */ |
| public void warn(Object message, Throwable exception) { |
| log(Level.WARNING, String.valueOf(message), exception); |
| } |
| |
| |
| } |