com.google.gwt.libideas.logging.shared.Log.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.libideas.logging.shared.Log.java

Source

/*
 * Copyright 2008 Google Inc.
 * 
 * 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.google.gwt.libideas.logging.shared;

import com.google.gwt.core.client.GWT;
import com.google.gwt.libideas.logging.shared.impl.LogImpl;

import java.util.Iterator;

/**
 * This class is very loosely based Java's Logger class. It is static to allow
 * differed binding to remove logging information in production code.
 * 
 * By default the logging level is set to {@link Level.CONFIG}.
 * 
 * If you wish to use this class in code that may not be run in a GWT
 * environment, you must instantiate on of the system logging adaptors available
 * from {@link com.google.gwt.libideas.logging.server.SystemLogSystemLog}.
 * 
 * @deprecated use the com.google.gwt.gen2.logging classes instead
 */
@Deprecated
public class Log {
    public static final String CATEGORY = "gwt.logging";
    private static LogImpl impl;

    static {
        try {
            impl = GWT.create(LogImpl.class);
        } catch (UnsupportedOperationException ex) {
            // You must be in server mode;
        }
    }

    /**
     * Add a log Handler to receive logging messages.
     * <p>
     * If no handlers are supplied and a message should be logged, it will be
     * logging to the GWT console in hosted mode and the JavaScript console in web
     * mode.
     * 
     * @param handler the new handler
     * @return whether the handler was added.
     * 
     */
    public static boolean addLogHandler(LogHandler handler) {
        return impl.addLogHandler(handler);
    }

    /**
     * Clear all handlers.
     */

    public static void clearLogHandlers() {
        impl.clearLogHandlers();
    }

    /**
     * Log a CONFIG message.
     * 
     */
    public static void config(String msg) {
        config(msg, null);
    }

    /**
     * Log a CONFIG message.
     */
    public static void config(String msg, String category) {
        impl.config(msg, category);
    }

    /**
     * Log a FINE message.
     */
    public static void fine(String msg) {
        fine(msg, null);
    }

    /**
     * Log a FINE message.
     */
    public static void fine(String msg, String category) {
        impl.fine(msg, category);
    }

    /**
     * Log a FINER message.
     */
    public static void finer(String msg) {
        finer(msg, null);
    }

    /**
     * Log a FINER message.
     */
    public static void finer(String msg, String category) {
        impl.finer(msg, category);
    }

    /**
     * Log a FINEST message.
     */
    public static void finest(String msg) {
        finest(msg, null);
    }

    /**
     * Log a FINEST message.
     */
    public static void finest(String msg, String category) {
        impl.finest(msg, category);
    }

    /**
     * Get the default log level needed to publish messages. This can be
     * overridden by the settings per category.
     * 
     * @return this Logger's level
     */
    public static Level getDefaultLevel() {
        return impl.getDefaultLevel();
    }

    /**
     * Log an INFO message.
     */
    public static void info(String msg) {
        info(msg, null);
    }

    /**
     * Log an INFO message.
     */
    public static void info(String msg, String category) {
        impl.info(msg, category);
    }

    /**
     * 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.
     * 
     * @param level a message logging level
     * @return true if the given message level is currently being logged.
     */
    public static boolean isLoggable(Level level) {
        return impl.isLoggable(level);
    }

    /**
     * Is the logging system in minimal mode? i.e. only severe logging messages
     * are logged and
     */
    public static boolean isLoggingMinimal() {
        return impl.isLoggingMinimal();
    }

    /**
     * Is Logging supported?
     */
    public static boolean isLoggingSupported() {
        return impl.isLoggingSupported();
    }

    /**
     * Returns an iterator of all currently defined levels.
     */
    public static Iterator levelIterator() {
        return impl.levelIterator();
    }

    /**
     * Logs a message using a given level. This method cannot be removed in
     * minimal logging mode, so use it only if you cannot use one of the static
     * logging messages.
     */

    public static void log(String msg, Level level, String category, Throwable e) {
        impl.log(msg, level, category, e);
    }

    /**
     * Return the correct level based on name.
     * 
     * @throws IllegalArgumentException for unknown levels.
     */

    public static Level parseLevel(String levelName) {
        return impl.parse(levelName);
    }

    /**
     * Remove a log Handler.
     * <P>
     * Returns silently if the given Handler is not found or is null
     * 
     * @param handler a logging Handler
     * @exception SecurityException if a security manager exists and if the caller
     *              does not have LoggingPermission("control").
     */
    public static void removeLogHandler(LogHandler handler) {
        impl.removeLogHandler(handler);
    }

    /**
     * Set the default log level specifying which message levels will be logged by
     * this logger.
     */
    public static void setDefaultLevel(Level newLevel) {
        impl.setDefaultLevel(newLevel);
    }

    /**
     * Sets the level of a given logging category. This level overrides the
     * default logging level.
     * 
     * @param category category
     * @param level level
     */
    public static void setLevel(String category, Level level) {
        impl.setLevel(category, level);
    }

    /**
     * Log a SEVERE message.
     * <p>
     * If the logger is currently enabled for the SEVERE message level then the
     * given message is forwarded to all the registered output Handler objects.
     * <p>
     * 
     * @param msg The string message
     */
    public static void severe(String msg) {
        severe(msg, null);
    }

    /**
     * Log a SEVERE message.
     */
    public static void severe(String msg, String category) {
        severe(msg, category, null);
    }

    /**
     * Log a SEVERE message.
     */
    public static void severe(String msg, String category, Throwable t) {
        impl.severe(msg, category, t);
    }

    /**
     * Splits the category into its component parts, separated by the "."
     * character.
     */
    public static String[] splitCategory(String category) {
        return impl.splitCategory(category);
    }

    /**
     * Log a WARNING message.
     * <p>
     * If the logger is currently enabled for the WARNING message level then the
     * given message is forwarded to all the registered output Handler objects.
     * <p>
     * 
     * @param msg The string message
     */
    public static void warning(String msg) {
        warning(msg, null);
    }

    /**
     * Log a WARNING message.
     */
    public static void warning(String msg, String category) {
        warning(msg, category, null);
    }

    /**
     * Log a WARNING message.
     */
    public static void warning(String msg, String category, Throwable e) {
        impl.warning(msg, category, e);
    }

    /**
     * Gets the current LogImpl class. Should only be used by classes directly
     * extending the logging system.
     */
    protected static LogImpl getLogImpl() {
        return impl;
    }

    protected static void initLogImpl(LogImpl impl) {
        Log.impl = impl;
    }

    static void registerLevel(Level level) {
        impl.registerLevel(level);
    }

    /**
     * Installs an uncaught exception handler that logs messages under the
     * "uncaught" category.
     */
    public final void installUncaughtExceptionHandler() {
        GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
            public void onUncaughtException(Throwable e) {
                Log.severe(e.getMessage(), "uncaught", e);
            }
        });
    }

}