mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-08 09:35:23 +02:00
Bug 148484 - Refactor logging plugin
This commit is contained in:
parent
568e8c931c
commit
891609edee
21 changed files with 888 additions and 1199 deletions
|
@ -12,15 +12,18 @@ Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
||||||
Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
{Name} (company) - description of contribution.
|
Michael Berger (IBM Canada) - 148434 Better user assistance for logging preference page.
|
||||||
-->
|
-->
|
||||||
<?NLS TYPE="org.eclipse.help.contexts"?>
|
<?NLS TYPE="org.eclipse.help.contexts"?>
|
||||||
|
|
||||||
<contexts>
|
<contexts>
|
||||||
|
<!-- RSE logging -->
|
||||||
<context id="pref0000">
|
<context id="rsel0000">
|
||||||
<description>Settings for the logging of messages.</description>
|
<description>This is the RSE Logging preference page.
|
||||||
|
You can specify what severity of messages you wish to log - from informational messages, to warnings, to errors.
|
||||||
</context>
|
The debug setting provides the most detail.
|
||||||
|
Messages are logged to the .log file in the .metadata folder of the workspace.
|
||||||
|
</description>
|
||||||
|
</context>
|
||||||
|
|
||||||
</contexts>
|
</contexts>
|
|
@ -9,5 +9,6 @@ Require-Bundle: org.eclipse.ui,
|
||||||
org.eclipse.core.runtime
|
org.eclipse.core.runtime
|
||||||
Eclipse-LazyStart: true
|
Eclipse-LazyStart: true
|
||||||
Export-Package: org.eclipse.rse.logging,
|
Export-Package: org.eclipse.rse.logging,
|
||||||
org.eclipse.rse.logging.performance
|
org.eclipse.rse.logging.performance,
|
||||||
|
org.eclipse.rse.logging.ui
|
||||||
Bundle-Vendor: Eclipse.org
|
Bundle-Vendor: Eclipse.org
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
bin.includes = HelpContexts.xml,\
|
bin.includes = HelpContexts.xml,\
|
||||||
RemoteSystemsLogging.properties,\
|
|
||||||
plugin.properties,\
|
plugin.properties,\
|
||||||
plugin.xml,\
|
plugin.xml,\
|
||||||
style/,\
|
style/,\
|
||||||
|
|
|
@ -31,7 +31,7 @@ Contributors:
|
||||||
|
|
||||||
<!-- Preferences -->
|
<!-- Preferences -->
|
||||||
<extension point="org.eclipse.core.runtime.preferences">
|
<extension point="org.eclipse.core.runtime.preferences">
|
||||||
<initializer class="org.eclipse.rse.logging.LoggingPreferenceInitializer"/>
|
<initializer class="org.eclipse.rse.internal.logging.LoggingPreferenceInitializer"/>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
/********************************************************************************
|
|
||||||
* Copyright (c) 2002, 2006 IBM Corporation. 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
|
|
||||||
*
|
|
||||||
* Initial Contributors:
|
|
||||||
* The following IBM employees contributed to the Remote System Explorer
|
|
||||||
* component that contains this file: David McKnight, Kushal Munir,
|
|
||||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
|
||||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* {Name} (company) - description of contribution.
|
|
||||||
********************************************************************************/
|
|
||||||
|
|
||||||
package org.eclipse.rse.internal.logging;
|
|
||||||
|
|
||||||
import java.util.Hashtable;
|
|
||||||
|
|
||||||
import org.eclipse.core.runtime.Plugin;
|
|
||||||
import org.eclipse.rse.logging.Logger;
|
|
||||||
|
|
||||||
public class LoggerController {
|
|
||||||
|
|
||||||
private static Hashtable pluginTable = new Hashtable();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return an previously cached Logger instance.<br>
|
|
||||||
* It will return null if no Logger instance has been created
|
|
||||||
* for this plugin before.
|
|
||||||
*/
|
|
||||||
public static Logger getInst(Plugin plugin) {
|
|
||||||
if (pluginTable.containsKey(plugin))
|
|
||||||
return (Logger) pluginTable.get(plugin);
|
|
||||||
else
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void registerInst(Plugin plugin, Logger logger) {
|
|
||||||
pluginTable.put(plugin, logger);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void freeInst(Plugin plugin) {
|
|
||||||
// get cached instance if one exists.
|
|
||||||
Logger logger = getInst(plugin);
|
|
||||||
// no luck, this means we have an incorrect free, do nothing.
|
|
||||||
if (logger == null)
|
|
||||||
return;
|
|
||||||
logger.freeResources();
|
|
||||||
pluginTable.remove(plugin);
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -14,26 +14,30 @@
|
||||||
* {Name} (company) - description of contribution.
|
* {Name} (company) - description of contribution.
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.logging;
|
package org.eclipse.rse.internal.logging;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
||||||
|
import org.eclipse.rse.logging.IRemoteSystemsLogging;
|
||||||
|
import org.eclipse.rse.logging.RemoteSystemsLoggingPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class initializes logging preferences.
|
* This class initializes logging preferences.
|
||||||
*/
|
*/
|
||||||
public class LoggingPreferenceInitializer extends AbstractPreferenceInitializer {
|
public class LoggingPreferenceInitializer extends AbstractPreferenceInitializer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
public LoggingPreferenceInitializer() {
|
public LoggingPreferenceInitializer() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
|
* @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
|
||||||
*/
|
*/
|
||||||
public void initializeDefaultPreferences() {
|
public void initializeDefaultPreferences() {
|
||||||
RemoteSystemsLoggingPlugin.getDefault().initializeDefaultPreferences();
|
Preferences prefs = RemoteSystemsLoggingPlugin.getDefault().getPluginPreferences();
|
||||||
}
|
prefs.setDefault(IRemoteSystemsLogging.DEBUG_LEVEL, IRemoteSystemsLogging.LOG_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,59 +0,0 @@
|
||||||
/********************************************************************************
|
|
||||||
* Copyright (c) 2006 IBM Corporation. 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
|
|
||||||
*
|
|
||||||
* Initial Contributors:
|
|
||||||
* The following IBM employees contributed to the Remote System Explorer
|
|
||||||
* component that contains this file: David McKnight, Kushal Munir,
|
|
||||||
* Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
|
|
||||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* {Name} (company) - description of contribution.
|
|
||||||
********************************************************************************/
|
|
||||||
|
|
||||||
package org.eclipse.rse.logging;
|
|
||||||
|
|
||||||
import org.eclipse.core.runtime.Plugin;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The main plugin class to be used in the desktop.
|
|
||||||
*/
|
|
||||||
public class Activator extends Plugin {
|
|
||||||
|
|
||||||
//The shared instance.
|
|
||||||
private static Activator plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The constructor.
|
|
||||||
*/
|
|
||||||
public Activator() {
|
|
||||||
plugin = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called upon plug-in activation
|
|
||||||
*/
|
|
||||||
public void start(BundleContext context) throws Exception {
|
|
||||||
super.start(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called when the plug-in is stopped
|
|
||||||
*/
|
|
||||||
public void stop(BundleContext context) throws Exception {
|
|
||||||
super.stop(context);
|
|
||||||
plugin = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the shared instance.
|
|
||||||
*/
|
|
||||||
public static Activator getDefault() {
|
|
||||||
return plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -21,59 +21,39 @@ package org.eclipse.rse.logging;
|
||||||
*/
|
*/
|
||||||
public interface IRemoteSystemsLogging {
|
public interface IRemoteSystemsLogging {
|
||||||
|
|
||||||
|
|
||||||
// All attributes here are static final.
|
|
||||||
/**
|
/**
|
||||||
* Name of the key that controls the logging level.<br>
|
* Name of the key that controls the logging level.<br>
|
||||||
*/
|
*/
|
||||||
String PLUGIN_ID = "org.eclipse.rse.logging";
|
public static final String PLUGIN_ID = "org.eclipse.rse.logging";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Name of the key that controls the logging level.<br>
|
* Name of the key that controls the logging level.<br>
|
||||||
* (value is "debug_level").
|
* (value is "debug_level").
|
||||||
*/
|
*/
|
||||||
String DEBUG_LEVEL = "debug_level";
|
public static final String DEBUG_LEVEL = "debug_level";
|
||||||
|
|
||||||
/**
|
|
||||||
* Name of the key that controls the log location.<br>
|
|
||||||
* (value is "log_location").
|
|
||||||
*/
|
|
||||||
String LOG_LOCATION = "log_location";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set debug_level to this value to get Error messages.<br>
|
* Set debug_level to this value to get Error messages.<br>
|
||||||
* (value is 0).
|
* (value is 0).
|
||||||
*/
|
*/
|
||||||
int LOG_ERROR = 0;
|
public static final int LOG_ERROR = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set debug_level to this value to get Warning messages.<br>
|
* Set debug_level to this value to get Warning messages.<br>
|
||||||
* (value is 1).
|
* (value is 1).
|
||||||
*/
|
*/
|
||||||
int LOG_WARNING = 1;
|
public static final int LOG_WARNING = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set debug_level to this value to get Information messages.<br>
|
* Set debug_level to this value to get Information messages.<br>
|
||||||
* (value is 2).
|
* (value is 2).
|
||||||
*/
|
*/
|
||||||
int LOG_INFO = 2;
|
public static final int LOG_INFO = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set debug_level to this value to get Debug messages.<br>
|
* Set debug_level to this value to get Debug messages.<br>
|
||||||
* (value is 3).
|
* (value is 3).
|
||||||
*/
|
*/
|
||||||
int LOG_DEBUG = 3;
|
public static final int LOG_DEBUG = 3;
|
||||||
|
|
||||||
/**
|
|
||||||
* Set log_location to this value to log to a file.<br>
|
|
||||||
* (value is "Log_To_File").
|
|
||||||
*/
|
|
||||||
String LOG_TO_FILE = "Log_To_File";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set log_location to this value to log to a Std out.<br>
|
|
||||||
* (value is "Log_To_StdOut").
|
|
||||||
*/
|
|
||||||
String LOG_TO_STDOUT = "Log_To_StdOut";
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -19,15 +19,11 @@ package org.eclipse.rse.logging;
|
||||||
import org.eclipse.core.runtime.ILog;
|
import org.eclipse.core.runtime.ILog;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.MultiStatus;
|
import org.eclipse.core.runtime.MultiStatus;
|
||||||
import org.eclipse.core.runtime.Platform;
|
|
||||||
import org.eclipse.core.runtime.Plugin;
|
import org.eclipse.core.runtime.Plugin;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
||||||
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
|
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
|
||||||
import org.eclipse.rse.internal.logging.RemoteSystemLogListener;
|
|
||||||
import org.osgi.framework.Bundle;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic Logger class for handling Remote Systems logging and tracing.<br>
|
* Generic Logger class for handling Remote Systems logging and tracing.<br>
|
||||||
|
@ -59,10 +55,9 @@ import org.osgi.framework.Bundle;
|
||||||
* out.logInfo("loading myPlugin class.");<br>
|
* out.logInfo("loading myPlugin class.");<br>
|
||||||
* //out.logWarning("This is a warning message.");<br>
|
* //out.logWarning("This is a warning message.");<br>
|
||||||
* //out.logError("This is an error.", new Exception());<br>
|
* //out.logError("This is an error.", new Exception());<br>
|
||||||
* //if (Logger.DEBUG)<br>
|
* //out.logDebugMessage(<br>
|
||||||
* // out.logDebugMessage(<br>
|
* // "myPlugin",<br>
|
||||||
* // "myPlugin",<br>
|
* // "this is a debug message from class myPlugin.");<br>
|
||||||
* // "this is a debug message from class myPlugin.");<br>
|
|
||||||
* ......<br>
|
* ......<br>
|
||||||
* ......<br>
|
* ......<br>
|
||||||
* }<br>
|
* }<br>
|
||||||
|
@ -77,70 +72,42 @@ import org.osgi.framework.Bundle;
|
||||||
*/
|
*/
|
||||||
public class Logger implements IPropertyChangeListener {
|
public class Logger implements IPropertyChangeListener {
|
||||||
|
|
||||||
public static final String Copyright =
|
|
||||||
"(C) Copyright IBM Corp. 2002, 2003. All Rights Reserved.";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This SHOULD be set to false in production.<br>
|
|
||||||
* Used to compile out developement debug messages.<br>
|
|
||||||
*/
|
|
||||||
public final static boolean DEBUG = false;
|
|
||||||
|
|
||||||
// Cashed workbenchPlugin Log, LogListener instances
|
|
||||||
private ILog systemsPluginLog = null;
|
private ILog systemsPluginLog = null;
|
||||||
private RemoteSystemLogListener logListener = null;
|
private RemoteSystemLogListener logListener = null;
|
||||||
|
|
||||||
// Cashed Plugin ID, and plugin
|
|
||||||
private String pluginId = null;
|
private String pluginId = null;
|
||||||
Plugin systemPlugin = null;
|
private Plugin systemPlugin = null;
|
||||||
|
private int debug_level = IRemoteSystemsLogging.LOG_ERROR;
|
||||||
|
|
||||||
// Controls logging level
|
/**
|
||||||
private int debug_level = 0;
|
* Creates a new Logger. Invoked by the LoggerFactory.
|
||||||
|
* @param systemPlugin The preferences for this plugin will determine the detail
|
||||||
// Captures initialization errors
|
* logged by this logger. This allows different levels of detail to be logged in the
|
||||||
private boolean init_ok = true;
|
* workbench.
|
||||||
|
* @see LoggerFactory#getInst(Plugin);
|
||||||
protected Logger(Plugin systemPlugin) {
|
*/
|
||||||
|
Logger(Plugin systemPlugin) {
|
||||||
this.systemPlugin = systemPlugin;
|
this.systemPlugin = systemPlugin;
|
||||||
this.pluginId = systemPlugin.getBundle().getSymbolicName();
|
this.pluginId = systemPlugin.getBundle().getSymbolicName();
|
||||||
initialize();
|
initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the Logger. The logger uses an ILog from the platform for this particular plugin, and
|
||||||
|
* establishes a listener on that log to format the items placed in the log.
|
||||||
|
*/
|
||||||
private void initialize() {
|
private void initialize() {
|
||||||
try {
|
systemsPluginLog = systemPlugin.getLog();
|
||||||
|
logListener = new RemoteSystemLogListener(systemPlugin);
|
||||||
systemsPluginLog = systemPlugin.getLog();
|
systemsPluginLog.addLogListener(logListener);
|
||||||
if (logListener == null)
|
Preferences store = systemPlugin.getPluginPreferences();
|
||||||
logListener = new RemoteSystemLogListener(systemPlugin);
|
debug_level = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||||
systemsPluginLog.addLogListener(logListener);
|
store.addPropertyChangeListener(this);
|
||||||
|
store.addPropertyChangeListener(logListener);
|
||||||
// get the debug level from plugin Preference store.
|
|
||||||
// note: logListener must be initialized before calling getPreference store!
|
|
||||||
Preferences store = systemPlugin.getPluginPreferences();
|
|
||||||
debug_level = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
|
||||||
|
|
||||||
store.addPropertyChangeListener(this);
|
|
||||||
store.addPropertyChangeListener(logListener);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Errors occured during initialize, disable logging.
|
|
||||||
// should never be here. Use Platform logger instead.
|
|
||||||
Bundle bundle = Platform.getBundle(Platform.PI_RUNTIME);
|
|
||||||
Platform.getLog(bundle).log(
|
|
||||||
new Status(
|
|
||||||
IStatus.ERROR,
|
|
||||||
IRemoteSystemsLogging.PLUGIN_ID,
|
|
||||||
IStatus.OK,
|
|
||||||
"could not create Logger for " + pluginId,
|
|
||||||
e));
|
|
||||||
init_ok = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a Debug message. This is intended to be wrapped as follows:<br>
|
* Log a Debug message. This is intended to be used as follows:<br>
|
||||||
* if (Logger.DEBUG)<br>
|
* Logger.logDebugMessage("someClassName", "someMessage");<br>
|
||||||
* Logger.logDebugMessage("someClassName", "someMessage");<br>
|
|
||||||
* <br>
|
* <br>
|
||||||
* and the output will be:<br>
|
* and the output will be:<br>
|
||||||
* <br>
|
* <br>
|
||||||
|
@ -153,16 +120,10 @@ public class Logger implements IPropertyChangeListener {
|
||||||
* Note that since this message is only for developer debugging, it does not
|
* Note that since this message is only for developer debugging, it does not
|
||||||
* need to be localized to proper local.<br>
|
* need to be localized to proper local.<br>
|
||||||
*/
|
*/
|
||||||
|
public synchronized void logDebugMessage(String className, String message) {
|
||||||
public synchronized void logDebugMessage(
|
if (debug_level >= IRemoteSystemsLogging.LOG_DEBUG) {
|
||||||
String className,
|
MultiStatus debugStatus = new MultiStatus(pluginId, IStatus.OK, className, null);
|
||||||
String message) {
|
Status infoStatus = new Status(IStatus.OK, pluginId, IStatus.OK, message, null);
|
||||||
if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_DEBUG)) {
|
|
||||||
// ie: print all INFO, WARNING and ERROR messages
|
|
||||||
MultiStatus debugStatus =
|
|
||||||
new MultiStatus(pluginId, IStatus.OK, className, null);
|
|
||||||
Status infoStatus =
|
|
||||||
new Status(IStatus.OK, pluginId, IStatus.OK, message, null);
|
|
||||||
debugStatus.add(infoStatus);
|
debugStatus.add(infoStatus);
|
||||||
systemsPluginLog.log(debugStatus);
|
systemsPluginLog.log(debugStatus);
|
||||||
}
|
}
|
||||||
|
@ -173,16 +134,11 @@ public class Logger implements IPropertyChangeListener {
|
||||||
* be localized to proper local.<br>
|
* be localized to proper local.<br>
|
||||||
* ie: Resource.getString() should already have been called
|
* ie: Resource.getString() should already have been called
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public synchronized void logError(String message, Throwable ex) {
|
public synchronized void logError(String message, Throwable ex) {
|
||||||
if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_ERROR)) {
|
if (debug_level >= IRemoteSystemsLogging.LOG_ERROR) {
|
||||||
// ie: print only ERROR messages
|
if (message == null) message = "";
|
||||||
if (message == null)
|
Status errorStatus = new Status(IStatus.ERROR, pluginId, IStatus.OK, message, ex);
|
||||||
message = "";
|
|
||||||
Status errorStatus =
|
|
||||||
new Status(IStatus.ERROR, pluginId, IStatus.OK, message, ex);
|
|
||||||
systemsPluginLog.log(errorStatus);
|
systemsPluginLog.log(errorStatus);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,28 +147,21 @@ public class Logger implements IPropertyChangeListener {
|
||||||
* be localized to proper local.<br>
|
* be localized to proper local.<br>
|
||||||
* ie: Resource.getString() should already have been called
|
* ie: Resource.getString() should already have been called
|
||||||
*/
|
*/
|
||||||
public synchronized void logInfo(String message)
|
public synchronized void logInfo(String message) {
|
||||||
{
|
|
||||||
logInfo(message, null);
|
logInfo(message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log an Information message. Note that the message should already
|
* Log an Information message. Note that the message should already
|
||||||
* be localized to proper local.<br>
|
* be localized to proper local.<br>
|
||||||
* ie: Resource.getString() should already have been called
|
* ie: Resource.getString() should already have been called
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public synchronized void logInfo(String message, Throwable ex) {
|
public synchronized void logInfo(String message, Throwable ex) {
|
||||||
if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_INFO)) {
|
if (debug_level >= IRemoteSystemsLogging.LOG_INFO) {
|
||||||
if (message == null)
|
if (message == null) message = "";
|
||||||
message = "";
|
Status infoStatus = new Status(IStatus.INFO, pluginId, IStatus.OK, message, ex);
|
||||||
// ie: print all INFO, WARNING and ERROR messages
|
|
||||||
Status infoStatus =
|
|
||||||
new Status(IStatus.INFO, pluginId, IStatus.OK, message, ex);
|
|
||||||
systemsPluginLog.log(infoStatus);
|
systemsPluginLog.log(infoStatus);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -220,8 +169,7 @@ public class Logger implements IPropertyChangeListener {
|
||||||
* be localized to proper local.<br>
|
* be localized to proper local.<br>
|
||||||
* ie: Resource.getString() should already have been called
|
* ie: Resource.getString() should already have been called
|
||||||
*/
|
*/
|
||||||
public synchronized void logWarning(String message)
|
public synchronized void logWarning(String message) {
|
||||||
{
|
|
||||||
logWarning(message, null);
|
logWarning(message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,26 +179,17 @@ public class Logger implements IPropertyChangeListener {
|
||||||
* ie: Resource.getString() should already have been called
|
* ie: Resource.getString() should already have been called
|
||||||
*/
|
*/
|
||||||
public synchronized void logWarning(String message, Throwable ex) {
|
public synchronized void logWarning(String message, Throwable ex) {
|
||||||
if ((init_ok) && (debug_level >= IRemoteSystemsLogging.LOG_WARNING)) {
|
if (debug_level >= IRemoteSystemsLogging.LOG_WARNING) {
|
||||||
if (message == null)
|
if (message == null) message = "";
|
||||||
message = "";
|
Status warningStatus = new Status(IStatus.WARNING, pluginId, IStatus.OK, message, ex);
|
||||||
// ie: print all WARNING and ERROR messages
|
|
||||||
Status warningStatus =
|
|
||||||
new Status(
|
|
||||||
IStatus.WARNING,
|
|
||||||
pluginId,
|
|
||||||
IStatus.OK,
|
|
||||||
message,
|
|
||||||
ex);
|
|
||||||
systemsPluginLog.log(warningStatus);
|
systemsPluginLog.log(warningStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void setDebugLevel(int level) {
|
public synchronized void setDebugLevel(int level) {
|
||||||
debug_level = level;
|
debug_level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized int getDebugLevel() {
|
public synchronized int getDebugLevel() {
|
||||||
return debug_level;
|
return debug_level;
|
||||||
}
|
}
|
||||||
|
@ -260,10 +199,9 @@ public class Logger implements IPropertyChangeListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle changes from Preferences page.
|
* Handle changes from a Preferences page.
|
||||||
*/
|
*/
|
||||||
public synchronized void propertyChange(PropertyChangeEvent event) {
|
public synchronized void propertyChange(PropertyChangeEvent event) {
|
||||||
// refresh the debug level from plugin Preference store
|
|
||||||
Preferences prefs = systemPlugin.getPluginPreferences();
|
Preferences prefs = systemPlugin.getPluginPreferences();
|
||||||
debug_level = prefs.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
debug_level = prefs.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
|
|
||||||
package org.eclipse.rse.logging;
|
package org.eclipse.rse.logging;
|
||||||
|
|
||||||
|
import java.util.Hashtable;
|
||||||
import org.eclipse.core.runtime.Plugin;
|
import org.eclipse.core.runtime.Plugin;
|
||||||
import org.eclipse.rse.internal.logging.LoggerController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory class for creating Logger instances.<br>
|
* Factory class for creating Logger instances.<br>
|
||||||
|
@ -27,39 +27,31 @@ import org.eclipse.rse.internal.logging.LoggerController;
|
||||||
*/
|
*/
|
||||||
public class LoggerFactory {
|
public class LoggerFactory {
|
||||||
|
|
||||||
|
private static Hashtable pluginTable = new Hashtable();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a Logger instance for the given plugin.<br> Note that there is only
|
* Returns the Logger instance for a given plugin. There is only
|
||||||
* a singelton instance of the Logger class per plugin. You are guarenteed the
|
* one instance of the Logger class per plugin.
|
||||||
* same instance if one has previously been created.
|
|
||||||
*/
|
*/
|
||||||
public static Logger getInst(Plugin plugin) {
|
public static Logger getLogger(Plugin plugin) {
|
||||||
|
Logger logger = (Logger) pluginTable.get(plugin);
|
||||||
// get cached instance from controller if one exists.
|
if (logger == null) {
|
||||||
Logger inst = LoggerController.getInst(plugin);
|
logger = new Logger(plugin);
|
||||||
// no luck, create it and register it with the controller, and create
|
pluginTable.put(plugin, logger);
|
||||||
// preference page.
|
|
||||||
if (inst == null) {
|
|
||||||
inst = new Logger(plugin);
|
|
||||||
LoggerController.registerInst(plugin, inst);
|
|
||||||
// Check to see if the Logging plugin out instance has been created yet.
|
|
||||||
// If it has, use it to log
|
|
||||||
if (RemoteSystemsLoggingPlugin.out != null)
|
|
||||||
RemoteSystemsLoggingPlugin.out.logInfo(
|
|
||||||
"Created Logger instance for "
|
|
||||||
+ plugin.getBundle().getSymbolicName());
|
|
||||||
}
|
}
|
||||||
|
return logger;
|
||||||
return inst;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees resources used by the Logger instance for the given plugin.<br>
|
* Frees resources used by the Logger instance for the given plugin.<br>
|
||||||
* This methods must be called as part of the the plugin shutdown life cycle.
|
* This methods must be called as part of the the plugin shutdown life cycle.
|
||||||
*/
|
*/
|
||||||
public static void freeInst(Plugin plugin) {
|
public static void freeLogger(Plugin plugin) {
|
||||||
// delegate to controller
|
Logger logger = (Logger) pluginTable.get(plugin);
|
||||||
LoggerController.freeInst(plugin);
|
if (logger != null) {
|
||||||
|
logger.freeResources();
|
||||||
|
pluginTable.remove(plugin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@
|
||||||
* {Name} (company) - description of contribution.
|
* {Name} (company) - description of contribution.
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.logging;
|
package org.eclipse.rse.logging;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -26,27 +26,22 @@ import org.eclipse.core.runtime.ILogListener;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.Plugin;
|
import org.eclipse.core.runtime.Plugin;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
|
||||||
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
||||||
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
|
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
|
||||||
import org.eclipse.rse.logging.IRemoteSystemsLogging;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log Listener is a sink for messages coming from Logger.
|
* Log Listener is a sink for messages coming from Logger.
|
||||||
*/
|
*/
|
||||||
public class RemoteSystemLogListener implements ILogListener, IPropertyChangeListener {
|
class RemoteSystemLogListener implements ILogListener, IPropertyChangeListener {
|
||||||
|
|
||||||
private PrintWriter log = null;
|
private PrintWriter log = null;
|
||||||
private File outputFile = null;
|
private File outputFile = null;
|
||||||
private boolean log_to_stdout = false;
|
|
||||||
private Plugin plugin = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new log listener for a plugin.
|
* Create a new log listener for a plugin.
|
||||||
* @param plugin The plugin for which to create a log listener.
|
* @param plugin The plugin for which to create a log listener.
|
||||||
*/
|
*/
|
||||||
public RemoteSystemLogListener(Plugin plugin) {
|
public RemoteSystemLogListener(Plugin plugin) {
|
||||||
this.plugin = plugin;
|
|
||||||
IPath path = plugin.getStateLocation().addTrailingSeparator().append(".log");
|
IPath path = plugin.getStateLocation().addTrailingSeparator().append(".log");
|
||||||
outputFile = path.toFile();
|
outputFile = path.toFile();
|
||||||
if ((outputFile != null) && (outputFile.exists())) {
|
if ((outputFile != null) && (outputFile.exists())) {
|
||||||
|
@ -61,13 +56,8 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
|
||||||
*/
|
*/
|
||||||
private void initialize() {
|
private void initialize() {
|
||||||
try {
|
try {
|
||||||
Preferences store = plugin.getPluginPreferences();
|
freeResources();
|
||||||
String log_location = store.getString(IRemoteSystemsLogging.LOG_LOCATION);
|
log = new PrintWriter(new BufferedWriter(new FileWriter(outputFile.toString(), true)), true);
|
||||||
if ((log_location != null) && (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))) {
|
|
||||||
doLogToView();
|
|
||||||
} else {
|
|
||||||
doLogToFile();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log = null;
|
log = null;
|
||||||
System.err.println("Exception in RemoteSystemLogListener.initialize(): " + e.getMessage());
|
System.err.println("Exception in RemoteSystemLogListener.initialize(): " + e.getMessage());
|
||||||
|
@ -75,35 +65,11 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs to standard output.
|
|
||||||
*/
|
|
||||||
private void doLogToView() {
|
|
||||||
// make sure we free resources first
|
|
||||||
freeResources();
|
|
||||||
// log
|
|
||||||
log = new PrintWriter(System.out, true);
|
|
||||||
// cach last state
|
|
||||||
log_to_stdout = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doLogToFile() throws Exception {
|
|
||||||
// make sure we free resources first
|
|
||||||
freeResources();
|
|
||||||
// log
|
|
||||||
log =
|
|
||||||
new PrintWriter(
|
|
||||||
new BufferedWriter(new FileWriter(outputFile.toString(), true)),
|
|
||||||
true);
|
|
||||||
// cache last state
|
|
||||||
log_to_stdout = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void logging(IStatus status) {
|
public void logging(IStatus status) {
|
||||||
if (log == null)
|
if (log == null)
|
||||||
return;
|
return;
|
||||||
else {
|
else {
|
||||||
// Need a to string here, because we need to be able to compate dates.
|
// Need a to string here, because we need to be able to compare dates.
|
||||||
String date = new Date().toString();
|
String date = new Date().toString();
|
||||||
log.println(date);
|
log.println(date);
|
||||||
int severity = status.getSeverity();
|
int severity = status.getSeverity();
|
||||||
|
@ -119,17 +85,14 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
|
||||||
|
|
||||||
log.print(" ");
|
log.print(" ");
|
||||||
log.print(status.getPlugin());
|
log.print(status.getPlugin());
|
||||||
// removed for now because we do not use Error codes.
|
|
||||||
//log.print(" ");
|
|
||||||
//log.print(status.getCode());
|
|
||||||
log.print(" ");
|
log.print(" ");
|
||||||
log.println(status.getMessage());
|
log.println(status.getMessage());
|
||||||
if (status.getException() != null)
|
if (status.getException() != null) status.getException().printStackTrace(log);
|
||||||
status.getException().printStackTrace(log);
|
|
||||||
if (status.isMultiStatus()) {
|
if (status.isMultiStatus()) {
|
||||||
IStatus[] children = status.getChildren();
|
IStatus[] children = status.getChildren();
|
||||||
for (int i = 0; i < children.length; i++)
|
for (int i = 0; i < children.length; i++) {
|
||||||
loggingChild(children[i]);
|
loggingChild(children[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
log.println("--------------------------------------------");
|
log.println("--------------------------------------------");
|
||||||
}
|
}
|
||||||
|
@ -149,8 +112,7 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
|
||||||
else {
|
else {
|
||||||
log.print("\t\t");
|
log.print("\t\t");
|
||||||
log.println(status.getMessage());
|
log.println(status.getMessage());
|
||||||
if (status.getException() != null)
|
if (status.getException() != null) status.getException().printStackTrace(log);
|
||||||
status.getException().printStackTrace(log);
|
|
||||||
if (status.isMultiStatus()) {
|
if (status.isMultiStatus()) {
|
||||||
IStatus[] children = status.getChildren();
|
IStatus[] children = status.getChildren();
|
||||||
for (int i = 0; i < children.length; i++)
|
for (int i = 0; i < children.length; i++)
|
||||||
|
@ -168,14 +130,7 @@ public class RemoteSystemLogListener implements ILogListener, IPropertyChangeLis
|
||||||
}
|
}
|
||||||
|
|
||||||
public void freeResources() {
|
public void freeResources() {
|
||||||
if (log == null)
|
if (log == null) return;
|
||||||
return;
|
|
||||||
|
|
||||||
// make sure to not close std_out. A closed stream can *not*
|
|
||||||
// br re-opened!
|
|
||||||
if (log_to_stdout)
|
|
||||||
return;
|
|
||||||
|
|
||||||
log.flush();
|
log.flush();
|
||||||
log.close();
|
log.close();
|
||||||
log = null;
|
log = null;
|
|
@ -24,23 +24,15 @@ import org.eclipse.core.runtime.FileLocator;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.Plugin;
|
import org.eclipse.core.runtime.Plugin;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remote Systems Logging plugin.
|
* Remote Systems Logging plugin.
|
||||||
*/
|
*/
|
||||||
public class RemoteSystemsLoggingPlugin extends Plugin {
|
public class RemoteSystemsLoggingPlugin extends Plugin {
|
||||||
|
|
||||||
|
private static RemoteSystemsLoggingPlugin singleton;
|
||||||
//The shared instance.
|
|
||||||
private static RemoteSystemsLoggingPlugin inst;
|
|
||||||
|
|
||||||
//Resource bundle.
|
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
|
||||||
// The cached Logger inst.
|
|
||||||
public static Logger out = null;
|
public static Logger out = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,17 +40,14 @@ public class RemoteSystemsLoggingPlugin extends Plugin {
|
||||||
*/
|
*/
|
||||||
public RemoteSystemsLoggingPlugin() {
|
public RemoteSystemsLoggingPlugin() {
|
||||||
super();
|
super();
|
||||||
|
singleton = this;
|
||||||
if (inst == null) {
|
|
||||||
inst = this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the shared plugin instance.
|
* Returns the shared plugin instance.
|
||||||
*/
|
*/
|
||||||
public static RemoteSystemsLoggingPlugin getDefault() {
|
public static RemoteSystemsLoggingPlugin getDefault() {
|
||||||
return inst;
|
return singleton;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,47 +68,33 @@ public class RemoteSystemsLoggingPlugin extends Plugin {
|
||||||
* Returns the plugin's resource bundle.
|
* Returns the plugin's resource bundle.
|
||||||
*/
|
*/
|
||||||
public ResourceBundle getResourceBundle() {
|
public ResourceBundle getResourceBundle() {
|
||||||
|
if (resourceBundle == null) {
|
||||||
if (resourceBundle == null) {
|
try {
|
||||||
|
IPath path = new Path("$nl$/RemoteSystemsLogging.properties");
|
||||||
try {
|
URL url = FileLocator.find(getBundle(), path, null);
|
||||||
IPath path = new Path("$nl$/RemoteSystemsLogging.properties");
|
resourceBundle = new PropertyResourceBundle(url.openStream());
|
||||||
URL url = FileLocator.find(getBundle(), path, null);
|
} catch (Exception x) {
|
||||||
resourceBundle = new PropertyResourceBundle(url.openStream());
|
resourceBundle = null;
|
||||||
} catch (Exception x) {
|
out.logInfo("RemoteSystemsLoggingPlugin - unable to log resourcebundle");
|
||||||
resourceBundle = null;
|
}
|
||||||
out.logInfo("RemoteSystemsLoggingPlugin - unable to log resourcebundle");
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceBundle;
|
return resourceBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* (non-Javadoc)
|
||||||
* Sets default preference values.
|
* @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
|
||||||
*/
|
*/
|
||||||
public void initializeDefaultPreferences() {
|
public void start(BundleContext context) throws Exception {
|
||||||
Preferences prefs = getPluginPreferences();
|
super.start(context);
|
||||||
prefs.setDefault(IRemoteSystemsLogging.DEBUG_LEVEL, IRemoteSystemsLogging.LOG_ERROR);
|
out = LoggerFactory.getLogger(this);
|
||||||
prefs.setDefault(IRemoteSystemsLogging.LOG_LOCATION, IRemoteSystemsLogging.LOG_TO_FILE);
|
out.logInfo("loading RemoteSystemsLoggingPlugin class.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* (non-Javadoc)
|
||||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
* @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
|
||||||
*/
|
*/
|
||||||
public void start(BundleContext context) throws Exception {
|
public void stop(BundleContext context) throws Exception {
|
||||||
super.start(context);
|
LoggerFactory.freeLogger(this);
|
||||||
|
super.stop(context);
|
||||||
// don't need a preference page for this plugin.
|
}
|
||||||
out = LoggerFactory.getInst(this);
|
|
||||||
out.logInfo("loading RemoteSystemsLoggingPlugin class.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
|
||||||
*/
|
|
||||||
public void stop(BundleContext context) throws Exception {
|
|
||||||
LoggerFactory.freeInst(this);
|
|
||||||
super.stop(context);
|
|
||||||
}
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -14,7 +14,7 @@
|
||||||
* {Name} (company) - description of contribution.
|
* {Name} (company) - description of contribution.
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.logging;
|
package org.eclipse.rse.logging.ui;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
|
@ -0,0 +1,30 @@
|
||||||
|
/********************************************************************************
|
||||||
|
* Copyright (c) 2006 IBM Corporation. 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:
|
||||||
|
* David Dykstal (IBM) - 148434 Better F1 help.
|
||||||
|
********************************************************************************/
|
||||||
|
package org.eclipse.rse.logging.ui;
|
||||||
|
|
||||||
|
import org.eclipse.osgi.util.NLS;
|
||||||
|
|
||||||
|
public class LoggingPreferenceLabels extends NLS {
|
||||||
|
|
||||||
|
private static String BUNDLE_NAME = "org.eclipse.rse.logging.ui.LoggingPreferenceLabels";//$NON-NLS-1$
|
||||||
|
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_TOPLABEL1;
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_TOPLABEL2;
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_ERRORS_ONLY;
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS;
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_INFO_DEBUG;
|
||||||
|
public static String LOGGING_PREFERENCE_PAGE_FULL_DEBUG;
|
||||||
|
|
||||||
|
static {
|
||||||
|
// load message values from bundle file
|
||||||
|
NLS.initializeMessages(BUNDLE_NAME, LoggingPreferenceLabels.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -21,12 +21,9 @@
|
||||||
|
|
||||||
# Preference Page
|
# Preference Page
|
||||||
# ----------------
|
# ----------------
|
||||||
LoggingPreferencePage.topLabel1 = Specify the logging options for {0}
|
LOGGING_PREFERENCE_PAGE_TOPLABEL1 = Specify the logging options for {0}
|
||||||
LoggingPreferencePage.topLabel2 = Logging Level:
|
LOGGING_PREFERENCE_PAGE_TOPLABEL2 = Logging Level:
|
||||||
LoggingPreferencePage.errors_only = Errors only
|
LOGGING_PREFERENCE_PAGE_ERRORS_ONLY = Errors only
|
||||||
LoggingPreferencePage.warnings_errors = Warnings and errors
|
LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS = Warnings and errors
|
||||||
LoggingPreferencePage.info_debug = Warnings, errors and information messages
|
LOGGING_PREFERENCE_PAGE_INFO_DEBUG = Warnings, errors and information messages
|
||||||
LoggingPreferencePage.full_debug = Full debug
|
LOGGING_PREFERENCE_PAGE_FULL_DEBUG = Full debug
|
||||||
LoggingPreferencePage.logging_location = Logging Location:
|
|
||||||
LoggingPreferencePage.log_to_file = Log to file (default)
|
|
||||||
LoggingPreferencePage.log_to_stdout = Log to Standard Out
|
|
|
@ -11,23 +11,20 @@
|
||||||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
|
* Michael Berger (IBM Canada) - 148434 Better F1 help.
|
||||||
* {Name} (company) - description of contribution.
|
* {Name} (company) - description of contribution.
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.logging;
|
package org.eclipse.rse.logging.ui;
|
||||||
|
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.Plugin;
|
||||||
import org.eclipse.core.runtime.IConfigurationElement;
|
|
||||||
import org.eclipse.core.runtime.IExecutableExtension;
|
|
||||||
import org.eclipse.core.runtime.Platform;
|
|
||||||
import org.eclipse.jface.preference.IPreferenceStore;
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
import org.eclipse.jface.preference.PreferencePage;
|
import org.eclipse.jface.preference.PreferencePage;
|
||||||
import org.eclipse.jface.preference.PreferenceStore;
|
import org.eclipse.jface.preference.PreferenceStore;
|
||||||
import org.eclipse.rse.internal.logging.LabelUtil;
|
import org.eclipse.rse.logging.IRemoteSystemsLogging;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
|
@ -37,32 +34,21 @@ import org.eclipse.swt.widgets.Control;
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
import org.eclipse.ui.IWorkbench;
|
import org.eclipse.ui.IWorkbench;
|
||||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||||
import org.eclipse.ui.help.WorkbenchHelp;
|
import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||||
import org.osgi.framework.Bundle;
|
import org.osgi.framework.Bundle;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An abstract preference page for all remote system logging.<br/>
|
* An abstract preference page for all remote system logging.<br/>
|
||||||
* Use a subclass of this page if you need a preference page to control
|
* Use a subclass of this page if you need a preference page to control
|
||||||
* logging.
|
* logging.
|
||||||
*/
|
*/
|
||||||
public abstract class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, IExecutableExtension {
|
public abstract class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
|
||||||
|
|
||||||
|
|
||||||
private Button radioButton0;
|
private Button radioButton0;
|
||||||
private Button radioButton1;
|
private Button radioButton1;
|
||||||
private Button radioButton2;
|
private Button radioButton2;
|
||||||
private Button radioButton3;
|
private Button radioButton3;
|
||||||
private Button radioButtonLogFile;
|
|
||||||
private Button radioButtonLogView;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the plugin instance who's preference store will be used
|
|
||||||
* to control the settings on this page. Also, when this page is closed
|
|
||||||
* the settings are restored in the preference store of the above plugin.
|
|
||||||
*/
|
|
||||||
private Bundle bundle = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates composite control and sets the default layout data.
|
* Creates composite control and sets the default layout data.
|
||||||
|
@ -90,37 +76,28 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
* Method declared on PreferencePage
|
* Method declared on PreferencePage
|
||||||
*/
|
*/
|
||||||
protected Control createContents(Composite parent) {
|
protected Control createContents(Composite parent) {
|
||||||
|
Bundle bundle = getBundle();
|
||||||
Composite composite_tab = createComposite(parent, 2);
|
Composite composite_tab = createComposite(parent, 2);
|
||||||
String bundleName = (String)(bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME));
|
String bundleName = (String) (bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME));
|
||||||
String topLabel1 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel1");
|
String topLabel1 = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_TOPLABEL1;
|
||||||
topLabel1 = MessageFormat.format(topLabel1, new Object[] {bundleName});
|
topLabel1 = MessageFormat.format(topLabel1, new Object[] { bundleName });
|
||||||
createLabel(composite_tab, topLabel1);
|
createLabel(composite_tab, topLabel1);
|
||||||
forceSpace(composite_tab);
|
forceSpace(composite_tab);
|
||||||
String topLabel2 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel2");
|
String topLabel2 = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_TOPLABEL2;
|
||||||
createLabel(composite_tab, topLabel2);
|
createLabel(composite_tab, topLabel2);
|
||||||
tabForward(composite_tab);
|
tabForward(composite_tab);
|
||||||
Composite composite1_radioButton = createComposite(composite_tab, 1);
|
Composite composite1_radioButton = createComposite(composite_tab, 1);
|
||||||
String text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.errors_only");
|
String text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_ERRORS_ONLY;
|
||||||
Set used = LabelUtil.usedFromString("ad"); // the mnemonics already used on preference page (in English)
|
Set used = LabelUtil.usedFromString("ad"); // the mnemonics already used on preference page (in English)
|
||||||
radioButton0 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
radioButton0 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
||||||
text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.warnings_errors");
|
text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS;
|
||||||
radioButton1 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
radioButton1 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
||||||
text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.info_debug");
|
text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_INFO_DEBUG;
|
||||||
radioButton2 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
radioButton2 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
||||||
// now add debug stuff, that only shows up in a debug build.
|
text = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_FULL_DEBUG;
|
||||||
if (Logger.DEBUG) {
|
radioButton3 = createRadioButton(composite1_radioButton, LabelUtil.assignMnemonic(text, used));
|
||||||
radioButton3 = createRadioButton(composite1_radioButton, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.full_debug"));
|
|
||||||
Composite composite_tab2 = createComposite(parent, 2);
|
|
||||||
Label label3 = createLabel(composite_tab2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.logging_location"));
|
|
||||||
tabForward(composite_tab2);
|
|
||||||
Composite composite_radioButton2 = createComposite(composite_tab2, 1);
|
|
||||||
radioButtonLogFile = createRadioButton(composite_radioButton2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.log_to_file"));
|
|
||||||
radioButtonLogView = createRadioButton(composite_radioButton2, RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.log_to_stdout"));
|
|
||||||
WorkbenchHelp.setHelp(composite_tab2, "com.ibm.etools.systems.logging.pref0000");
|
|
||||||
}
|
|
||||||
initializeValues();
|
initializeValues();
|
||||||
RemoteSystemsLoggingPlugin.out.logInfo("created LoggingPreferencePage");
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "com.ibm.etools.systems.logging.rsel0000");
|
||||||
WorkbenchHelp.setHelp(composite_tab, "com.ibm.etools.systems.logging.pref0000");
|
|
||||||
return new Composite(parent, SWT.NULL);
|
return new Composite(parent, SWT.NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,24 +139,27 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected IPreferenceStore doGetPreferenceStore() {
|
protected IPreferenceStore doGetPreferenceStore() {
|
||||||
|
Bundle bundle = getBundle();
|
||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
AbstractUIPlugin plugin = getPlugin();
|
AbstractUIPlugin plugin = getPlugin();
|
||||||
|
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
return plugin.getPreferenceStore();
|
return plugin.getPreferenceStore();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return new PreferenceStore();
|
return new PreferenceStore();
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return new PreferenceStore();
|
return new PreferenceStore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract AbstractUIPlugin getPlugin();
|
protected abstract AbstractUIPlugin getPlugin();
|
||||||
|
|
||||||
|
private Bundle getBundle() {
|
||||||
|
Plugin plugin = getPlugin();
|
||||||
|
Bundle bundle = plugin.getBundle();
|
||||||
|
return bundle;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method declared on IWorkbenchPreferencePage
|
* Method declared on IWorkbenchPreferencePage
|
||||||
*/
|
*/
|
||||||
|
@ -195,36 +175,24 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
radioButton0.setSelection(false);
|
radioButton0.setSelection(false);
|
||||||
radioButton1.setSelection(false);
|
radioButton1.setSelection(false);
|
||||||
radioButton2.setSelection(false);
|
radioButton2.setSelection(false);
|
||||||
if (null != radioButton3)
|
if (null != radioButton3) radioButton3.setSelection(false);
|
||||||
radioButton3.setSelection(false);
|
|
||||||
if (Logger.DEBUG) {
|
|
||||||
radioButtonLogFile.setSelection(false);
|
|
||||||
radioButtonLogView.setSelection(false);
|
|
||||||
}
|
|
||||||
int choice = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
int choice = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||||
switch (choice) {
|
switch (choice) {
|
||||||
case 0 :
|
case 0:
|
||||||
radioButton0.setSelection(true);
|
radioButton0.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 1 :
|
case 1:
|
||||||
radioButton1.setSelection(true);
|
radioButton1.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 2 :
|
case 2:
|
||||||
radioButton2.setSelection(true);
|
radioButton2.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 3 :
|
case 3:
|
||||||
if (null != radioButton3)
|
if (null != radioButton3)
|
||||||
radioButton3.setSelection(true);
|
radioButton3.setSelection(true);
|
||||||
else
|
|
||||||
radioButton2.setSelection(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (Logger.DEBUG) {
|
|
||||||
String log_location = store.getString(IRemoteSystemsLogging.LOG_LOCATION);
|
|
||||||
if (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))
|
|
||||||
radioButtonLogView.setSelection(true);
|
|
||||||
else
|
else
|
||||||
radioButtonLogFile.setSelection(true);
|
radioButton2.setSelection(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,36 +205,24 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
radioButton0.setSelection(false);
|
radioButton0.setSelection(false);
|
||||||
radioButton1.setSelection(false);
|
radioButton1.setSelection(false);
|
||||||
radioButton2.setSelection(false);
|
radioButton2.setSelection(false);
|
||||||
if (null != radioButton3)
|
if (null != radioButton3) radioButton3.setSelection(false);
|
||||||
radioButton3.setSelection(false);
|
|
||||||
if (Logger.DEBUG) {
|
|
||||||
radioButtonLogFile.setSelection(false);
|
|
||||||
radioButtonLogView.setSelection(false);
|
|
||||||
}
|
|
||||||
int choice = store.getDefaultInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
int choice = store.getDefaultInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||||
switch (choice) {
|
switch (choice) {
|
||||||
case 0 :
|
case 0:
|
||||||
radioButton0.setSelection(true);
|
radioButton0.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 1 :
|
case 1:
|
||||||
radioButton1.setSelection(true);
|
radioButton1.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 2 :
|
case 2:
|
||||||
radioButton2.setSelection(true);
|
radioButton2.setSelection(true);
|
||||||
break;
|
break;
|
||||||
case 3 :
|
case 3:
|
||||||
if (null != radioButton3)
|
if (null != radioButton3)
|
||||||
radioButton3.setSelection(true);
|
radioButton3.setSelection(true);
|
||||||
else
|
|
||||||
radioButton2.setSelection(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (Logger.DEBUG) {
|
|
||||||
String log_location = store.getDefaultString(IRemoteSystemsLogging.LOG_LOCATION);
|
|
||||||
if (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))
|
|
||||||
radioButtonLogView.setSelection(true);
|
|
||||||
else
|
else
|
||||||
radioButtonLogFile.setSelection(true);
|
radioButton2.setSelection(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,17 +252,8 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
choice = 1;
|
choice = 1;
|
||||||
else if (radioButton2.getSelection())
|
else if (radioButton2.getSelection())
|
||||||
choice = 2;
|
choice = 2;
|
||||||
else if (null != radioButton3 && radioButton3.getSelection())
|
else if (null != radioButton3 && radioButton3.getSelection()) choice = 3;
|
||||||
choice = 3;
|
|
||||||
store.setValue(IRemoteSystemsLogging.DEBUG_LEVEL, choice);
|
store.setValue(IRemoteSystemsLogging.DEBUG_LEVEL, choice);
|
||||||
if (Logger.DEBUG) {
|
|
||||||
String log_location = "";
|
|
||||||
if (radioButtonLogFile.getSelection())
|
|
||||||
log_location = IRemoteSystemsLogging.LOG_TO_FILE;
|
|
||||||
else
|
|
||||||
log_location = IRemoteSystemsLogging.LOG_TO_STDOUT;
|
|
||||||
store.setValue(IRemoteSystemsLogging.LOG_LOCATION, log_location);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -336,17 +283,4 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
||||||
data.horizontalSpan = 2;
|
data.horizontalSpan = 2;
|
||||||
label.setLayoutData(data);
|
label.setLayoutData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This is needed to get to the plugin id, and then plugin instance.
|
|
||||||
*/
|
|
||||||
public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
|
|
||||||
try {
|
|
||||||
String pluginName = config.getDeclaringExtension().getContributor().getName();
|
|
||||||
this.bundle = Platform.getBundle(pluginName);
|
|
||||||
} catch (Exception e) {
|
|
||||||
RemoteSystemsLoggingPlugin.out.logError("Failed to create LoggingPreferencePage.", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
package org.eclipse.rse.ui.propertypages;
|
package org.eclipse.rse.ui.propertypages;
|
||||||
|
|
||||||
import org.eclipse.rse.logging.LoggingPreferencePage;
|
import org.eclipse.rse.logging.ui.LoggingPreferencePage;
|
||||||
import org.eclipse.rse.ui.RSEUIPlugin;
|
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||||
|
|
||||||
|
|
|
@ -1810,7 +1810,7 @@ public class SystemFilterPoolManager implements ISystemFilterPoolManager
|
||||||
*/
|
*/
|
||||||
public void logDebugMessage(String prefix, String message)
|
public void logDebugMessage(String prefix, String message)
|
||||||
{
|
{
|
||||||
if ((Logger.DEBUG) && (logger!=null))
|
if ((logger!=null))
|
||||||
{
|
{
|
||||||
logger.logDebugMessage(prefix, message);
|
logger.logDebugMessage(prefix, message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,15 +448,13 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
|
||||||
if (passwordInformation == null && oldUserId != null && !forcePrompt) {
|
if (passwordInformation == null && oldUserId != null && !forcePrompt) {
|
||||||
SystemSignonInformation savedPasswordInformation = ppm.find(hostType, hostName, oldUserId);
|
SystemSignonInformation savedPasswordInformation = ppm.find(hostType, hostName, oldUserId);
|
||||||
if (savedPasswordInformation != null) {
|
if (savedPasswordInformation != null) {
|
||||||
if (validator != null) {
|
if (validator == null || validator.isValid(shell, savedPasswordInformation)) {
|
||||||
if (!validator.isValid(shell, savedPasswordInformation)) {
|
setPasswordInformation(savedPasswordInformation);
|
||||||
passwordValid = false;
|
passwordInformation = getPasswordInformation();
|
||||||
clearPasswordCache();
|
} else {
|
||||||
passwordInformation = null;
|
passwordValid = false;
|
||||||
} else {
|
clearPasswordCache();
|
||||||
setPasswordInformation(savedPasswordInformation);
|
passwordInformation = null;
|
||||||
passwordInformation = getPasswordInformation();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1087,7 +1085,7 @@ public abstract class AbstractConnectorService extends RSEModelObject implements
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logException(Throwable t) {
|
private void logException(Throwable t) {
|
||||||
Logger log = LoggerFactory.getInst(RSEUIPlugin.getDefault());
|
Logger log = LoggerFactory.getLogger(RSEUIPlugin.getDefault());
|
||||||
log.logError("Unexpected exception", t);
|
log.logError("Unexpected exception", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -655,10 +655,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
|
||||||
*/
|
*/
|
||||||
public static void logDebugMessage(String prefix, String message)
|
public static void logDebugMessage(String prefix, String message)
|
||||||
{
|
{
|
||||||
if (Logger.DEBUG)
|
log.logDebugMessage(prefix, message);
|
||||||
{
|
|
||||||
log.logDebugMessage(prefix, message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -716,7 +713,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
|
||||||
|
|
||||||
// logger
|
// logger
|
||||||
if (log == null) {
|
if (log == null) {
|
||||||
log = LoggerFactory.getInst(this);
|
log = LoggerFactory.getLogger(this);
|
||||||
log.logInfo("Loading " + this.getClass());
|
log.logInfo("Loading " + this.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -726,7 +723,7 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
|
||||||
*/
|
*/
|
||||||
public void stop(BundleContext context) throws Exception {
|
public void stop(BundleContext context) throws Exception {
|
||||||
logDebugMessage(this.getClass().getName(), "SHUTDOWN");
|
logDebugMessage(this.getClass().getName(), "SHUTDOWN");
|
||||||
LoggerFactory.freeInst(this);
|
LoggerFactory.freeLogger(this);
|
||||||
super.stop(context);
|
super.stop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue