All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.jdo.spi.persistence.utility.logging.LoggerJDK14 Maven / Gradle / Ivy

There is a newer version: 7.2024.1.Alpha1
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */
// Portions Copyright [2019] Payara Foundation and/or affiliates

package com.sun.jdo.spi.persistence.utility.logging;

import java.util.logging.Level;

/**
 * This class is used with JDK 1.4 (and higher) programs to log messages from
 * jdo components.  It extends a java.util.logging.Logger which does
 * the actual logging.
 *
 * @author  Craig Russell
 * @version 1.0
 */
public class LoggerJDK14 extends java.util.logging.Logger implements Logger {

    /** Class that issued logging call; set by inferCaller. */
    protected String sourceClassName;

    /** Method that issued logging call; set by inferCaller. */
    protected String sourceMethodName;

    /** Creates new LoggerJDK14.  The Thread context class loader or the
     * loader which loaded this class must be able to load the bundle.
     * @param loggerName the full domain name of this logger
     * @param bundleName the bundle name for message translation
     */
    public LoggerJDK14(String loggerName, String bundleName) {
        super (loggerName, bundleName);
    }

    /** Return whether logging is enabled
     * at the FINE level.  This method
     * is not exact because to make it
     * accurately reflect the logging level
     * we would have to include the JDK 1.4
     * java.util.logging.Level class.
     * @return whether logging is enabled at the fine level.
     */
    public boolean isLoggable() {
        return isLoggable(Level.FINE);
    }

    /**
     * Log a FINE message.
     * 

* If the logger is currently enabled for the FINE message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o Objects to be inserted into the message */ public void fine(String msg, Object[] o) { if (isLoggable(Level.FINE)) { inferCaller(); logp(Level.FINE, sourceClassName, sourceMethodName, msg, o); } } /** * Log a FINE message. *

* If the logger is currently enabled for the FINE message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message */ public void fine(String msg, Object o1) { if (isLoggable(Level.FINE)) { inferCaller(); logp(Level.FINE, sourceClassName, sourceMethodName, msg, o1); } } /** * Log a FINE message. *

* If the logger is currently enabled for the FINE message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message */ public void fine(String msg, Object o1, Object o2) { if (isLoggable(Level.FINE)) { inferCaller(); logp(Level.FINE, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2}); } } /** * Log a FINE message. *

* If the logger is currently enabled for the FINE message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message * @param o3 A parameter to be inserted into the message */ public void fine(String msg, Object o1, Object o2, Object o3) { if (isLoggable(Level.FINE)) { inferCaller(); logp(Level.FINE, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2, o3}); } } /** * Log a FINER message. *

* If the logger is currently enabled for the FINER message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o Objects to be inserted into the message */ public void finer(String msg, Object[] o) { if (isLoggable(Level.FINER)) { inferCaller(); logp(Level.FINER, sourceClassName, sourceMethodName, msg, o); } } /** * Log a FINER message. *

* If the logger is currently enabled for the FINER message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message */ public void finer(String msg, Object o1) { if (isLoggable(Level.FINER)) { inferCaller(); logp(Level.FINER, sourceClassName, sourceMethodName, msg, o1); } } /** * Log a FINER message. *

* If the logger is currently enabled for the FINER message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message */ public void finer(String msg, Object o1, Object o2) { if (isLoggable(Level.FINER)) { inferCaller(); logp(Level.FINER, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2}); } } /** * Log a FINER message. *

* If the logger is currently enabled for the FINER message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message * @param o3 A parameter to be inserted into the message */ public void finer(String msg, Object o1, Object o2, Object o3) { if (isLoggable(Level.FINER)) { inferCaller(); logp(Level.FINER, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2, o3}); } } /** * Log a FINEST message. *

* If the logger is currently enabled for the FINEST message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o Objects to be inserted into the message */ public void finest(String msg, Object[] o) { if (isLoggable(Level.FINEST)) { inferCaller(); logp(Level.FINEST, sourceClassName, sourceMethodName, msg, o); } } /** * Log a FINEST message. *

* If the logger is currently enabled for the FINEST message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message */ public void finest(String msg, Object o1) { if (isLoggable(Level.FINEST)) { inferCaller(); logp(Level.FINEST, sourceClassName, sourceMethodName, msg, o1); } } /** * Log a FINEST message. *

* If the logger is currently enabled for the FINEST message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message */ public void finest(String msg, Object o1, Object o2) { if (isLoggable(Level.FINEST)) { inferCaller(); logp(Level.FINEST, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2}); } } /** * Log a FINEST message. *

* If the logger is currently enabled for the FINEST message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message * @param o3 A parameter to be inserted into the message */ public void finest(String msg, Object o1, Object o2, Object o3) { if (isLoggable(Level.FINEST)) { inferCaller(); logp(Level.FINEST, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2, o3}); } } /** Prepare a printable version of this instance. * @return the String representation of this object */ public String toString() { StringBuilder buf = new StringBuilder ("LoggerJDK14: "); //NOI18N buf.append (" name: "); buf.append (getName()); //NOI18N buf.append (", super: "); buf.append (super.toString()); //NOI18N buf.append (", logging level: "); buf.append (getLevel()); //NOI18N return buf.toString(); } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message */ public void log(int level, String msg, Object o1) { Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg, o1); } } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message */ public void log(int level, String msg, Object o1, Object o2) { Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg, new Object[]{o1, o2}); } } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) * @param o1 A parameter to be inserted into the message * @param o2 A parameter to be inserted into the message * @param o3 A parameter to be inserted into the message */ public void log(int level, String msg, Object o1, Object o2, Object o3) { Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg, new Object[] {o1, o2, o3}); } } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) * @param o Objects to be inserted into the message */ public void log(int level, String msg, Object[] o) { Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg, o); } } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) */ public void log(int level, String msg) { Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg); } } /** * Log a message. *

* If the logger is currently enabled for the message * level then the given message, and the exception dump, * is forwarded to all the * registered output Handler objects. *

* @param level The level for this message * @param msg The string message (or a key in the message catalog) * @param thrown The exception to log */ public void log(int level, String msg, Throwable thrown ){ Level lvl = convertLevel(level); if (isLoggable(lvl)) { inferCaller(); logp(lvl, sourceClassName, sourceMethodName, msg, thrown); } } /** * Check if a message of the given level would actually be logged * by this logger. This check is based on the Loggers effective level, * which may be inherited from its parent. * * @return true if the given message level is currently being logged. * @param levelValue the level to check */ public boolean isLoggable(int levelValue) { return isLoggable(convertLevel(levelValue)); } /** Convert an int level used by jdo logger to the Level instance used * by JDK 1.4 logger. * This is done to allow components to use logging outside the JDK 1.4 * environment. * @param level the level to convert * @return the Level instance corresponding to the int level */ protected Level convertLevel(int level) { switch (level) { case 300: return Level.FINEST; case 400: return Level.FINER; case 500: return Level.FINE; case 700: return Level.CONFIG; case 800: return Level.INFO; case 900: return Level.WARNING; case 1000: return Level.SEVERE; default: return Level.CONFIG; } } /** * Method to infer the caller's class name and method name. * The method analyses the current stack trace, to find the method that * issued the logger call. It stores the callers class and method name * into fields sourceClassName and sourceMethodName. */ protected void inferCaller() { // Get the stack trace. StackTraceElement[] stack = (new Throwable()).getStackTrace(); // Search for the first frame before the "Logger" class. for(int ix = 0; ix < stack.length; ix++) { StackTraceElement frame = stack[ix]; String cname = frame.getClassName(); if (!isLoggerClass(cname)) { // We've found the relevant frame. sourceClassName = cname; sourceMethodName = frame.getMethodName(); return; } } } /** * This method is a helper method for {@link #inferCaller}. It returns * true if the specified class name denotes a logger class * that should be ignored when analysing the stack trace to infer the * caller of a log message. * @param className the class name to be checked. * @return true if the specified name denotes a logger class; * false otherwise. */ protected boolean isLoggerClass(String className) { return "com.sun.jdo.spi.persistence.utility.logging.LoggerJDK14". //NOI18N equals(className); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy