/****************************************************************************** * Copyright (c) 2002, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation ****************************************************************************/ package org.eclipse.gmf.examples.ui.pde.util; import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; import org.eclipse.gmf.examples.ui.pde.internal.GmfExamplesDebugOptions; import org.eclipse.gmf.examples.ui.pde.internal.GmfExamplesPlugin; import org.eclipse.gmf.examples.ui.pde.internal.GmfExamplesStatusCodes; /** * A utility for logging errors, warnings, and information. Provides a simple * interface for generating logs based on status objects. * * @author khussey * @canBeSeenBy %partners */ public class Log { /** * private constructor for the static class. */ protected Log() { super(); } /** * The default log listener for this log utility. */ private static final ILog fLog = GmfExamplesPlugin.getDefault().getLog(); /** * Retrieves the default log listener for this log utility. * * @return The default log listener for this log utility. */ protected static ILog getDefault() { return fLog; } /** * Responds to a log request for the specified plug-in based on the * specified status object. Statuses with severity of error or warning * result in the generation of a platform log for the specified plug-in; all * log requests are forward to the default log listener. * * @param plugin * The plug-in for which to generate a log. * @param status * The status object on which to base the log. * */ public static void log(Plugin plugin, IStatus status) { switch (status.getSeverity()) { case IStatus.ERROR: case IStatus.WARNING: getDefault().log(status); break; default: /* * The Eclipse logging facility does not have the concept of * logging levels. Anything logged to the plugins logger will * automatically be logged to the .log file. The Common Logging * implementation provides the common log file * (CommonBaseEvents.log) with the associated extension point * and preference page but is not related to the .log file. * Since we do not want to Eclipse log poluted with "plug-in * started" messages, we do not log these. * * getDefault().log(status); */ break; } } /** * Generates a log for the specified plug-in, with the specified severity, * status code, and message. * * @param plugin * The plug-in for which to generate a log. * @param severity * The severity of the log. * @param code * The status code for the log. * @param message * The message for the log. * */ public static void log(Plugin plugin, int severity, int code, String message) { log(plugin, severity, code, message, null); } /** * Generates a log for the specified plug-in, with the specified severity, * status code, message, and throwable. * * @param plugin * The plug-in for which to generate a log. * @param severity * The severity of the log. * @param code * The status code for the log. * @param message * The message for the log. * @param throwable * The throwable for the log. * */ public static void log(Plugin plugin, int severity, int code, String message, Throwable throwable) { // // Status ctor requires a non-null message String msg = message == null ? "" //$NON-NLS-1$ : message; try { log(plugin, new Status(severity, plugin.getBundle() .getSymbolicName(), code, msg, throwable)); } catch (IllegalArgumentException iae) { Trace.catching(GmfExamplesPlugin.getDefault(), GmfExamplesDebugOptions.EXCEPTIONS_CATCHING, Log.getDefault() .getClass(), "log", iae); //$NON-NLS-1$ Log.error(GmfExamplesPlugin.getDefault(), GmfExamplesStatusCodes.SERVICE_FAILURE, "log", iae); //$NON-NLS-1$ } } /** * Generates an error log for the specified plug-in, with the specified * status code and message. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * */ public static void error(Plugin plugin, int code, String message) { error(plugin, code, message, null); } /** * Generates an error log for the specified plug-in, with the specified * status code, message, and throwable. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * @param throwable * The throwable for the log. * */ public static void error(Plugin plugin, int code, String message, Throwable throwable) { log(plugin, IStatus.ERROR, code, message, throwable); } /** * Generates a warning log for the specified plug-in, with the specified * status code and message. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * */ public static void warning(Plugin plugin, int code, String message) { warning(plugin, code, message, null); } /** * Generates a warning log for the specified plug-in, with the specified * status code, message, and throwable. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * @param throwable * The throwable for the log. * */ public static void warning(Plugin plugin, int code, String message, Throwable throwable) { log(plugin, IStatus.WARNING, code, message, throwable); } /** * Generates an information log for the specified plug-in, with the * specified status code and message. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * */ public static void info(Plugin plugin, int code, String message) { info(plugin, code, message, null); } /** * Generates an information log for the specified plug-in, with the * specified status code, message, and throwable. * * @param plugin * The plug-in for which to generate a log. * @param code * The status code for the log. * @param message * The message for the log. * @param throwable * The throwable for the log. * */ public static void info(Plugin plugin, int code, String message, Throwable throwable) { log(plugin, IStatus.INFO, code, message, throwable); } }