mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-25 18:05:33 +02:00
Bug 148484 - Refactor logging plugin
This commit is contained in:
parent
cdf07cd4b3
commit
9ab955d6bf
8 changed files with 85 additions and 136 deletions
|
@ -18,14 +18,11 @@ package org.eclipse.rse.internal.logging;
|
|||
|
||||
import java.util.Hashtable;
|
||||
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.rse.logging.Logger;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
|
||||
public class LoggerController {
|
||||
|
||||
public static final String Copyright =
|
||||
"(C) Copyright IBM Corp. 2002, 2003. All Rights Reserved.";
|
||||
|
||||
private static Hashtable pluginTable = new Hashtable();
|
||||
|
||||
/**
|
||||
|
@ -33,19 +30,19 @@ public class LoggerController {
|
|||
* It will return null if no Logger instance has been created
|
||||
* for this plugin before.
|
||||
*/
|
||||
public static Logger getInst(AbstractUIPlugin plugin) {
|
||||
public static Logger getInst(Plugin plugin) {
|
||||
if (pluginTable.containsKey(plugin))
|
||||
return (Logger) pluginTable.get(plugin);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void registerInst(AbstractUIPlugin plugin, Logger logger) {
|
||||
public static void registerInst(Plugin plugin, Logger logger) {
|
||||
pluginTable.put(plugin, logger);
|
||||
return;
|
||||
}
|
||||
|
||||
public static void freeInst(AbstractUIPlugin plugin) {
|
||||
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.
|
||||
|
|
|
@ -25,65 +25,59 @@ import java.util.Date;
|
|||
import org.eclipse.core.runtime.ILogListener;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
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.PropertyChangeEvent;
|
||||
import org.eclipse.rse.logging.IRemoteSystemsLogging;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
|
||||
/**
|
||||
* Log Listener is a sink for messages coming from Logger.
|
||||
*/
|
||||
public class RemoteSystemLogListener
|
||||
implements ILogListener, IPropertyChangeListener {
|
||||
|
||||
public static final String Copyright =
|
||||
"(C) Copyright IBM Corp. 2002, 2003. All Rights Reserved.";
|
||||
public class RemoteSystemLogListener implements ILogListener, IPropertyChangeListener {
|
||||
|
||||
private PrintWriter log = null;
|
||||
private File outputFile = null;
|
||||
private boolean log_to_stdout = false;
|
||||
private AbstractUIPlugin plugin = null;
|
||||
private Plugin plugin = null;
|
||||
|
||||
public RemoteSystemLogListener(AbstractUIPlugin plugin) {
|
||||
/**
|
||||
* Create a new log listener for a plugin.
|
||||
* @param plugin The plugin for which to create a log listener.
|
||||
*/
|
||||
public RemoteSystemLogListener(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
IPath path =
|
||||
plugin.getStateLocation().addTrailingSeparator().append(".log");
|
||||
|
||||
IPath path = plugin.getStateLocation().addTrailingSeparator().append(".log");
|
||||
outputFile = path.toFile();
|
||||
|
||||
// make sure to delete old log file.
|
||||
if ((outputFile != null) && (outputFile.exists())) {
|
||||
outputFile.delete();
|
||||
}
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the logger. Retrieves the logging location preference and sets up the logger
|
||||
* to log to that location.
|
||||
*/
|
||||
private void initialize() {
|
||||
try {
|
||||
// Initialize log file location here. Check to see
|
||||
// if we need to log to file or View.
|
||||
IPreferenceStore store = plugin.getPreferenceStore();
|
||||
String log_location =
|
||||
store.getString(
|
||||
IRemoteSystemsLogging.LOG_LOCATION);
|
||||
|
||||
if ((log_location != null)
|
||||
&& (log_location
|
||||
.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))) {
|
||||
Preferences store = plugin.getPluginPreferences();
|
||||
String log_location = store.getString(IRemoteSystemsLogging.LOG_LOCATION);
|
||||
if ((log_location != null) && (log_location.equalsIgnoreCase(IRemoteSystemsLogging.LOG_TO_STDOUT))) {
|
||||
doLogToView();
|
||||
} else {
|
||||
doLogToFile();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// can not log anything.
|
||||
log = null;
|
||||
System.err.println("Exception in RemoteSystemLogListener.initialize(): "+e.getMessage());
|
||||
System.err.println("Exception in RemoteSystemLogListener.initialize(): " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs to standard output.
|
||||
*/
|
||||
private void doLogToView() {
|
||||
// make sure we free resources first
|
||||
freeResources();
|
||||
|
@ -153,7 +147,6 @@ public class RemoteSystemLogListener
|
|||
if (log == null)
|
||||
return;
|
||||
else {
|
||||
int severity = status.getSeverity();
|
||||
log.print("\t\t");
|
||||
log.println(status.getMessage());
|
||||
if (status.getException() != null)
|
||||
|
|
|
@ -16,14 +16,13 @@
|
|||
|
||||
package org.eclipse.rse.logging;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
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 AbstractUIPlugin {
|
||||
public class Activator extends Plugin {
|
||||
|
||||
//The shared instance.
|
||||
private static Activator plugin;
|
||||
|
@ -57,14 +56,4 @@ public class Activator extends AbstractUIPlugin {
|
|||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an image descriptor for the image file at the given
|
||||
* plug-in relative path.
|
||||
*
|
||||
* @param path the path
|
||||
* @return the image descriptor
|
||||
*/
|
||||
public static ImageDescriptor getImageDescriptor(String path) {
|
||||
return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.rse.logging", path);
|
||||
}
|
||||
}
|
|
@ -20,12 +20,12 @@ import org.eclipse.core.runtime.ILog;
|
|||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.MultiStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
||||
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
|
||||
import org.eclipse.rse.internal.logging.RemoteSystemLogListener;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
|
||||
|
@ -92,7 +92,7 @@ public class Logger implements IPropertyChangeListener {
|
|||
|
||||
// Cashed Plugin ID, and plugin
|
||||
private String pluginId = null;
|
||||
AbstractUIPlugin systemPlugin = null;
|
||||
Plugin systemPlugin = null;
|
||||
|
||||
// Controls logging level
|
||||
private int debug_level = 0;
|
||||
|
@ -100,7 +100,7 @@ public class Logger implements IPropertyChangeListener {
|
|||
// Captures initialization errors
|
||||
private boolean init_ok = true;
|
||||
|
||||
protected Logger(AbstractUIPlugin systemPlugin) {
|
||||
protected Logger(Plugin systemPlugin) {
|
||||
this.systemPlugin = systemPlugin;
|
||||
this.pluginId = systemPlugin.getBundle().getSymbolicName();
|
||||
initialize();
|
||||
|
@ -116,11 +116,11 @@ public class Logger implements IPropertyChangeListener {
|
|||
|
||||
// get the debug level from plugin Preference store.
|
||||
// note: logListener must be initialized before calling getPreference store!
|
||||
IPreferenceStore store = systemPlugin.getPreferenceStore();
|
||||
Preferences store = systemPlugin.getPluginPreferences();
|
||||
debug_level = store.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||
|
||||
systemPlugin.getPreferenceStore().addPropertyChangeListener(this);
|
||||
systemPlugin.getPreferenceStore().addPropertyChangeListener(logListener);
|
||||
store.addPropertyChangeListener(this);
|
||||
store.addPropertyChangeListener(logListener);
|
||||
|
||||
} catch (Exception e) {
|
||||
// Errors occured during initialize, disable logging.
|
||||
|
@ -264,10 +264,8 @@ public class Logger implements IPropertyChangeListener {
|
|||
*/
|
||||
public synchronized void propertyChange(PropertyChangeEvent event) {
|
||||
// refresh the debug level from plugin Preference store
|
||||
debug_level =
|
||||
systemPlugin.getPreferenceStore().getInt(
|
||||
IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||
|
||||
Preferences prefs = systemPlugin.getPluginPreferences();
|
||||
debug_level = prefs.getInt(IRemoteSystemsLogging.DEBUG_LEVEL);
|
||||
}
|
||||
|
||||
}
|
|
@ -16,9 +16,8 @@
|
|||
|
||||
package org.eclipse.rse.logging;
|
||||
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.rse.internal.logging.LoggerController;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
|
||||
|
||||
/**
|
||||
* Factory class for creating Logger instances.<br>
|
||||
|
@ -34,7 +33,7 @@ public class LoggerFactory {
|
|||
* a singelton instance of the Logger class per plugin. You are guarenteed the
|
||||
* same instance if one has previously been created.
|
||||
*/
|
||||
public static Logger getInst(AbstractUIPlugin plugin) {
|
||||
public static Logger getInst(Plugin plugin) {
|
||||
|
||||
// get cached instance from controller if one exists.
|
||||
Logger inst = LoggerController.getInst(plugin);
|
||||
|
@ -58,7 +57,7 @@ public class LoggerFactory {
|
|||
* 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.
|
||||
*/
|
||||
public static void freeInst(AbstractUIPlugin plugin) {
|
||||
public static void freeInst(Plugin plugin) {
|
||||
// delegate to controller
|
||||
LoggerController.freeInst(plugin);
|
||||
}
|
||||
|
|
|
@ -94,10 +94,10 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
|||
String bundleName = (String)(bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME));
|
||||
String topLabel1 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel1");
|
||||
topLabel1 = MessageFormat.format(topLabel1, new Object[] {bundleName});
|
||||
Label label1 = createLabel(composite_tab, topLabel1);
|
||||
createLabel(composite_tab, topLabel1);
|
||||
forceSpace(composite_tab);
|
||||
String topLabel2 = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.topLabel2");
|
||||
Label label2 = createLabel(composite_tab, topLabel2);
|
||||
createLabel(composite_tab, topLabel2);
|
||||
tabForward(composite_tab);
|
||||
Composite composite1_radioButton = createComposite(composite_tab, 1);
|
||||
String text = RemoteSystemsLoggingPlugin.getResourceString("LoggingPreferencePage.errors_only");
|
||||
|
@ -341,12 +341,10 @@ public abstract class LoggingPreferencePage extends PreferencePage implements IW
|
|||
* This is needed to get to the plugin id, and then plugin instance.
|
||||
*/
|
||||
public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
|
||||
// we are assuming here that only AbstractUIPlugins will be used.
|
||||
try {
|
||||
String nameSpace = config.getDeclaringExtension().getNamespace();
|
||||
this.bundle = Platform.getBundle(nameSpace);
|
||||
String pluginName = config.getDeclaringExtension().getContributor().getName();
|
||||
this.bundle = Platform.getBundle(pluginName);
|
||||
} catch (Exception e) {
|
||||
// log error. plugin remains null.
|
||||
RemoteSystemsLoggingPlugin.out.logError("Failed to create LoggingPreferencePage.", e);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,17 +20,18 @@ import java.net.URL;
|
|||
import java.util.PropertyResourceBundle;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
|
||||
/**
|
||||
* Remote Systems Logging plugin.
|
||||
*/
|
||||
public class RemoteSystemsLoggingPlugin extends AbstractUIPlugin {
|
||||
public class RemoteSystemsLoggingPlugin extends Plugin {
|
||||
|
||||
|
||||
//The shared instance.
|
||||
|
@ -83,7 +84,7 @@ public class RemoteSystemsLoggingPlugin extends AbstractUIPlugin {
|
|||
|
||||
try {
|
||||
IPath path = new Path("$nl$/RemoteSystemsLogging.properties");
|
||||
URL url = Platform.find(getBundle(), path);
|
||||
URL url = FileLocator.find(getBundle(), path, null);
|
||||
resourceBundle = new PropertyResourceBundle(url.openStream());
|
||||
} catch (Exception x) {
|
||||
resourceBundle = null;
|
||||
|
@ -95,16 +96,12 @@ public class RemoteSystemsLoggingPlugin extends AbstractUIPlugin {
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets default preference values. These values will be used
|
||||
* until some preferences are actually set using Preference dialog.
|
||||
* Sets default preference values.
|
||||
*/
|
||||
public void initializeDefaultPreferences() {
|
||||
getPreferenceStore().setDefault(
|
||||
IRemoteSystemsLogging.DEBUG_LEVEL,
|
||||
IRemoteSystemsLogging.LOG_ERROR);
|
||||
getPreferenceStore().setDefault(
|
||||
IRemoteSystemsLogging.LOG_LOCATION,
|
||||
IRemoteSystemsLogging.LOG_TO_FILE);
|
||||
Preferences prefs = getPluginPreferences();
|
||||
prefs.setDefault(IRemoteSystemsLogging.DEBUG_LEVEL, IRemoteSystemsLogging.LOG_ERROR);
|
||||
prefs.setDefault(IRemoteSystemsLogging.LOG_LOCATION, IRemoteSystemsLogging.LOG_TO_FILE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -94,6 +94,13 @@ public class PerformanceLogger
|
|||
static boolean _initialized = false;
|
||||
static HashMap perfLogRegistry = new HashMap();
|
||||
|
||||
/*
|
||||
* Static initializer to normalize this logger.
|
||||
*/
|
||||
static {
|
||||
normalize();
|
||||
}
|
||||
|
||||
static class StartData
|
||||
{
|
||||
long startTime = -1;
|
||||
|
@ -119,18 +126,7 @@ public class PerformanceLogger
|
|||
component = comp_id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PerformanceLogger(): class constructor
|
||||
* @return
|
||||
* - Normalization time generated
|
||||
* - XML file for default component created
|
||||
*/
|
||||
private PerformanceLogger() {
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* public static void enablePerformanceLogging(boolean enable) : enable performance logging
|
||||
* @param
|
||||
|
@ -241,35 +237,28 @@ public class PerformanceLogger
|
|||
}
|
||||
|
||||
/**
|
||||
* private void init() : method for class instance initialization.
|
||||
* @return
|
||||
* Normalization value generated
|
||||
* Set the normalization unit for this run.based on a standard method for class instance initialization.
|
||||
* @return a string containing the unit.
|
||||
*/
|
||||
private void init() {
|
||||
if (samplingTime == -1) {
|
||||
|
||||
/*Set normalization values*/
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
/*Trying to make sure it is not optimized by the compiler? */
|
||||
/* Excute some standard instruction sets, such that a reasonably elapsed time can be obtained */
|
||||
double val = 0;
|
||||
Double q = null;
|
||||
int i = 0;
|
||||
int n = 1000000;
|
||||
for ( i = 0; i < n; i++) { /* increment operation for 1000 times */
|
||||
Double dd = new Double(n);
|
||||
Double dr = new Double(n+i);
|
||||
q = new Double(dd.doubleValue()/dr.doubleValue());
|
||||
}
|
||||
val = q.doubleValue()/i;
|
||||
|
||||
long stopTime = System.currentTimeMillis();
|
||||
samplingTime = stopTime-startTime;
|
||||
System.out.println("SystemPerformanceLogger::Normalization Elapsed time = " + samplingTime);
|
||||
public static String normalize() {
|
||||
/*
|
||||
* Execute some standard code and time it to generate our normalization interval.
|
||||
* Return the value to attempt to make it is not optimized by the compiler.
|
||||
*/
|
||||
long startTime = System.currentTimeMillis();
|
||||
Double q = null;
|
||||
int i = 0;
|
||||
int n = 1000000;
|
||||
for ( i = 0; i < n; i++) {
|
||||
Double dd = new Double(n);
|
||||
Double dr = new Double(n+i);
|
||||
q = new Double(dd.doubleValue() / dr.doubleValue());
|
||||
}
|
||||
|
||||
double val = q.doubleValue() / i;
|
||||
long stopTime = System.currentTimeMillis();
|
||||
samplingTime = stopTime-startTime;
|
||||
String result = "SystemPerformanceLogger::Normalization Elapsed time = " + samplingTime + " " + val;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -495,7 +484,7 @@ public class PerformanceLogger
|
|||
|
||||
try {
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(cd.XMLFile), "UTF8"));
|
||||
Element root = cd.doc.getDocumentElement();
|
||||
cd.doc.getDocumentElement();
|
||||
Element task = td.node;
|
||||
|
||||
/* Construct Long class insatnce for string manipulation */
|
||||
|
@ -658,19 +647,10 @@ public class PerformanceLogger
|
|||
* os.version
|
||||
*/
|
||||
public static void listSystemProfile() {
|
||||
String java_version = System.getProperty("java.version");
|
||||
System.out.println("java version : " + System.getProperty("java.version"));
|
||||
String java_vm_version = System.getProperty("java.vm.version");
|
||||
String java_class_version = System.getProperty("java.class.version");
|
||||
String java_class_path = System.getProperty("java.class.path");
|
||||
String java_library_path = System.getProperty("java.library.path");
|
||||
String os_name = System.getProperty("os.name");
|
||||
System.out.println("OS name : " + System.getProperty("os.name"));
|
||||
String os_version = System.getProperty("os.version");
|
||||
System.out.println("OS version : " + System.getProperty("os.version"));
|
||||
String user_dir = System.getProperty("user.dir");
|
||||
System.out.println("working dir : " + System.getProperty("user.dir"));
|
||||
String home_dir = System.getProperty("home.dir");
|
||||
System.out.println("home dir : " + System.getProperty("home.dir"));
|
||||
}
|
||||
|
||||
|
@ -732,8 +712,6 @@ public class PerformanceLogger
|
|||
key = PerformanceLogger.register(key); // Expect error: already registered
|
||||
PerformanceLogger.deRegister(key);
|
||||
key = PerformanceLogger.register(key);
|
||||
|
||||
String val = "i = " + i;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue