mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
Improve Terminal Logging by quoting characters. Move logs to "eclipselogs"
This commit is contained in:
parent
95a8de4d41
commit
cd1decc3cf
3 changed files with 74 additions and 6 deletions
|
@ -41,13 +41,14 @@ public final class Logger {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String logFile = null;
|
String logFile = null;
|
||||||
File logDirWindows = new File("C:\\wblogs"); //$NON-NLS-1$
|
//TODO I think this should go into the workspace metadata instead.
|
||||||
File logDirUNIX = new File("/tmp/wblogs"); //$NON-NLS-1$
|
File logDirWindows = new File("C:\\eclipselogs"); //$NON-NLS-1$
|
||||||
|
File logDirUNIX = new File("/tmp/eclipselogs"); //$NON-NLS-1$
|
||||||
|
|
||||||
if (logDirWindows.isDirectory()) {
|
if (logDirWindows.isDirectory()) {
|
||||||
logFile = logDirWindows + "\\wbterminal.log"; //$NON-NLS-1$
|
logFile = logDirWindows + "\\tmterminal.log"; //$NON-NLS-1$
|
||||||
} else if (logDirUNIX.isDirectory()) {
|
} else if (logDirUNIX.isDirectory()) {
|
||||||
logFile = logDirUNIX + "/wbterminal.log"; //$NON-NLS-1$
|
logFile = logDirUNIX + "/tmterminal.log"; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
if (logFile != null) {
|
if (logFile != null) {
|
||||||
|
@ -61,6 +62,71 @@ public final class Logger {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encodes a String such that non-printable control characters are
|
||||||
|
* converted into user-readable escape sequences for logging.
|
||||||
|
* @param message String to encode
|
||||||
|
* @return encoded String
|
||||||
|
*/
|
||||||
|
public static final String encode(String message) {
|
||||||
|
boolean encoded = false;
|
||||||
|
StringBuffer buf = new StringBuffer(message.length()+32);
|
||||||
|
for (int i=0; i<message.length(); i++) {
|
||||||
|
char c=message.charAt(i);
|
||||||
|
switch(c) {
|
||||||
|
case '\\':
|
||||||
|
case '\'':
|
||||||
|
buf.append('\\'); buf.append(c); encoded=true;
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
buf.append('\\'); buf.append('r'); encoded=true;
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
buf.append('\\'); buf.append('n'); encoded=true;
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
buf.append('\\'); buf.append('t'); encoded=true;
|
||||||
|
break;
|
||||||
|
case '\f':
|
||||||
|
buf.append('\\'); buf.append('f'); encoded=true;
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
buf.append('\\'); buf.append('b'); encoded=true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (c <= '\u000f') {
|
||||||
|
buf.append('\\'); buf.append('x'); buf.append('0');
|
||||||
|
buf.append(Integer.toHexString(c));
|
||||||
|
encoded=true;
|
||||||
|
} else if (c>=' ' && c<'\u007f') {
|
||||||
|
buf.append(c);
|
||||||
|
} else {
|
||||||
|
buf.append('\\'); buf.append('u');
|
||||||
|
if (c<='\u0fff') {
|
||||||
|
buf.append('0');
|
||||||
|
if (c<='\u00ff') {
|
||||||
|
buf.append('0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf.append(Integer.toHexString(c));
|
||||||
|
encoded=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (encoded) {
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if logging is enabled.
|
||||||
|
* @return true if logging is enabled.
|
||||||
|
*/
|
||||||
|
public static final boolean isLogEnabled() {
|
||||||
|
return (logStream!=null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs the specified message. Do not append a newline to parameter
|
* Logs the specified message. Do not append a newline to parameter
|
||||||
|
|
|
@ -371,7 +371,9 @@ public class TerminalText implements Runnable, ControlListener {
|
||||||
* host.
|
* host.
|
||||||
*/
|
*/
|
||||||
public synchronized void setNewText(StringBuffer newBuffer) {
|
public synchronized void setNewText(StringBuffer newBuffer) {
|
||||||
Logger.log("new text: '" + newBuffer + "'"); //$NON-NLS-1$ //$NON-NLS-2$
|
if (Logger.isLogEnabled()) {
|
||||||
|
Logger.log("new text: '" + Logger.encode(newBuffer.toString()) + "'"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
}
|
||||||
newText = newBuffer;
|
newText = newBuffer;
|
||||||
|
|
||||||
// When continuous output is being processed by the Terminal view code, it
|
// When continuous output is being processed by the Terminal view code, it
|
||||||
|
|
|
@ -312,7 +312,7 @@ public class TelnetConnection extends Thread implements TelnetCodes {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
Logger.log("Received " + nRawBytes + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$
|
Logger.log("Received " + nRawBytes + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
new String(rawBytes, 0, nRawBytes) + "'"); //$NON-NLS-1$
|
Logger.encode(new String(rawBytes, 0, nRawBytes)) + "'"); //$NON-NLS-1$
|
||||||
|
|
||||||
// Process any TELNET protocol data that we receive. Don't
|
// Process any TELNET protocol data that we receive. Don't
|
||||||
// send any TELNET protocol data until we are sure the remote
|
// send any TELNET protocol data until we are sure the remote
|
||||||
|
|
Loading…
Add table
Reference in a new issue