Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorustieber2011-09-19 15:48:56 +0000
committerustieber2011-09-19 15:48:56 +0000
commitb6e81bb8405f99dda2764b22cff876fa00f734f5 (patch)
tree9e304c2f39e5c1204c610184c4ab69a56c1ba9fb
parent8467a9fbeedb115ef5ffeb44b77f1167767fbadf (diff)
downloadorg.eclipse.tcf-b6e81bb8405f99dda2764b22cff876fa00f734f5.tar.gz
org.eclipse.tcf-b6e81bb8405f99dda2764b22cff876fa00f734f5.tar.xz
org.eclipse.tcf-b6e81bb8405f99dda2764b22cff876fa00f734f5.zip
Target Explorer: Fix message arguments decoding and clean up logging format
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListener.java51
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListenerManager.java10
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.java1
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.properties2
4 files changed, 41 insertions, 23 deletions
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListener.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListener.java
index 6604ae64e..08264b80f 100644
--- a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListener.java
+++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListener.java
@@ -9,11 +9,12 @@
*******************************************************************************/
package org.eclipse.tm.te.tcf.log.core.internal.listener;
+import java.io.ByteArrayInputStream;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.Arrays;
import java.util.Date;
import org.eclipse.core.runtime.Assert;
@@ -21,7 +22,6 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.osgi.util.NLS;
import org.eclipse.tm.tcf.core.AbstractChannel.TraceListener;
import org.eclipse.tm.tcf.protocol.IChannel;
-import org.eclipse.tm.tcf.protocol.JSON;
import org.eclipse.tm.te.tcf.log.core.activator.CoreBundleActivator;
import org.eclipse.tm.te.tcf.log.core.interfaces.IPreferenceKeys;
import org.eclipse.tm.te.tcf.log.core.interfaces.ITracing;
@@ -96,7 +96,7 @@ public class ChannelTraceListener implements TraceListener {
ITracing.ID_TRACE_CHANNEL_TRACE_LISTENER, this);
}
- doLogMessage(type, token, service, name, data);
+ doLogMessage(type, token, service, name, data, true);
}
/* (non-Javadoc)
@@ -109,13 +109,13 @@ public class ChannelTraceListener implements TraceListener {
ITracing.ID_TRACE_CHANNEL_TRACE_LISTENER, this);
}
- doLogMessage(type, token, service, name, data);
+ doLogMessage(type, token, service, name, data, false);
}
/**
* Helper method to output the message to the logger.
*/
- private void doLogMessage(final char type, String token, String service, String name, byte[] data) {
+ private void doLogMessage(final char type, String token, String service, String name, byte[] data, boolean received) {
// Filter out the heart beat messages if not overwritten by the preferences
boolean showHeartbeats = Platform.getPreferencesService().getBoolean(CoreBundleActivator.getUniqueIdentifier(),
IPreferenceKeys.PREF_SHOW_HEARTBEATS, false, null);
@@ -124,7 +124,7 @@ public class ChannelTraceListener implements TraceListener {
}
// Format the message
- final String message = formatMessage(type, token, service, name, data);
+ final String message = formatMessage(type, token, service, name, data, received);
// Get the file writer
FileWriter writer = LogManager.getInstance().getWriter(channel);
if (writer != null) {
@@ -141,24 +141,39 @@ public class ChannelTraceListener implements TraceListener {
/**
* Format the trace message.
*/
- protected String formatMessage(char type, String token, String service, String name, byte[] data) {
+ protected String formatMessage(char type, String token, String service, String name, byte[] data, boolean received) {
// Get the current time stamp
String time = TIME_FORMAT.format(new Date(System.currentTimeMillis()));
// Decode the arguments again for tracing purpose
- Object[] args = null;
- if (data != null) try { args = JSON.parseSequence(data); } catch (IOException e) { /* ignored on purpose */ }
+ String args = null;
+ if (data != null) {
+ StringBuilder builder = new StringBuilder();
+ InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(data));
+ try {
+ int c = reader.read();
+ while (c != -1) {
+ builder.append(c != 0 ? Character.valueOf((char)c).charValue() : ' ');
+ c = reader.read();
+ }
+ } catch (IOException ex) { /* ignored on purpose */ }
+
+ if (builder.length() > 0) args = builder.toString().trim();
+ }
// Construct the full message
- String message = NLS.bind(Messages.ChannelTraceListener_message,
- new Object[] { time,
- Character.valueOf(type).toString(),
- token != null ? token : "-", //$NON-NLS-1$
- service != null ? service : "", //$NON-NLS-1$
- name != null ? "#" + name : "", //$NON-NLS-1$ //$NON-NLS-2$
- (data != null ? Arrays.toString(args) : "") }); //$NON-NLS-1$
-
- return message;
+ //
+ // The message format is: <time>: [<---|--->] <type> <token> <service>#<name> <args>
+ StringBuilder message = new StringBuilder();
+ message.append(time).append(":"); //$NON-NLS-1$
+ message.append(" ").append(received ? "<---" : "--->"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ message.append(" ").append(Character.valueOf(type)); //$NON-NLS-1$
+ if (token != null) message.append(" ").append(token); //$NON-NLS-1$
+ if (service != null) message.append(" ").append(service); //$NON-NLS-1$
+ if (name != null) message.append(" ").append(name); //$NON-NLS-1$
+ if (args != null && args.trim().length() > 0) message.append(" ").append(args.trim()); //$NON-NLS-1$
+
+ return message.toString();
}
}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListenerManager.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListenerManager.java
index 38d2b29d8..22e112a62 100644
--- a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListenerManager.java
+++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/listener/ChannelTraceListenerManager.java
@@ -124,7 +124,13 @@ public class ChannelTraceListenerManager {
if (!(channel instanceof AbstractChannel)) return;
// Remove the trace listener if any
- AbstractChannel.TraceListener traceListener = listeners.remove(channel);
- if (traceListener != null) ((AbstractChannel)channel).removeTraceListener(traceListener);
+ final AbstractChannel.TraceListener traceListener = listeners.remove(channel);
+ if (traceListener != null) {
+ Protocol.invokeLater(new Runnable() {
+ public void run() {
+ ((AbstractChannel)channel).removeTraceListener(traceListener);
+ }
+ });
+ }
}
}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.java
index ed5ace8c2..784b70ee9 100644
--- a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.java
+++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.java
@@ -29,7 +29,6 @@ public class Messages extends NLS {
// **** Declare externalized string id's down here *****
- public static String ChannelTraceListener_message;
public static String ChannelTraceListener_channelOpened_message;
public static String ChannelTraceListener_channelClosed_message;
public static String ChannelTraceListener_logManagerDispose_message;
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.properties
index 494ae4e33..2bc593e2a 100644
--- a/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.properties
+++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.log.core/src/org/eclipse/tm/te/tcf/log/core/internal/nls/Messages.properties
@@ -3,8 +3,6 @@
# Externalized Strings.
#
-# The message format is: <time>: <type>: <token>|-><service>#<name> <args>
-ChannelTraceListener_message={0}: {1}: {2}>{3}{4} {5}
ChannelTraceListener_channelOpened_message=# {0}: Opened channel {1}
ChannelTraceListener_channelClosed_message=# {0}: Closed channel {1} (error={2})
ChannelTraceListener_logManagerDispose_message=# {0}: Closed session

Back to the top