Skip to content

Commit b959f3e

Browse files
committed
Add log message
This replaces the console based logger with a logger that post log messages back to the host. VS Code will write these messages to its output window
1 parent 04a4fe7 commit b959f3e

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/tsserver/webServer.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ namespace ts.server {
1919
getLogFileName: returnUndefined,
2020
};
2121

22-
// Save off original versions before they are overwitten
23-
const consoleLog = console.log.bind(console);
24-
const consoleError = console.error.bind(console);
22+
type MessageLogLevel = "info" | "perf" | "error";
2523

26-
class ConsoleLogger implements Logger {
24+
interface LoggingMessage {
25+
readonly type: "log";
26+
readonly level: MessageLogLevel;
27+
readonly body: string
28+
}
2729

28-
private readonly topLevelGroupName = "TS Server";
30+
class MainProcessLogger implements Logger {
2931

3032
private currentGroupCount = 0;
3133
private seq = 0;
@@ -71,16 +73,16 @@ namespace ts.server {
7173

7274
switch (type) {
7375
case Msg.Info:
74-
this.write(() => { consoleLog(s); });
76+
this.write("info", s);
7577
break;
7678

7779
case Msg.Perf:
78-
this.write(() => { consoleLog(s); });
80+
this.write("perf", s);
7981
break;
8082

8183
case Msg.Err:
8284
default:
83-
this.write(() => { consoleError(s); });
85+
this.write("error", s);
8486
break;
8587
}
8688

@@ -93,14 +95,12 @@ namespace ts.server {
9395
return undefined;
9496
}
9597

96-
private write(f: () => void) {
97-
console.group(this.topLevelGroupName);
98-
try {
99-
f();
100-
}
101-
finally {
102-
console.groupEnd();
103-
}
98+
private write(level: MessageLogLevel, body: string) {
99+
postMessage(<LoggingMessage>{
100+
type: "log",
101+
level,
102+
body,
103+
});
104104
}
105105
}
106106

@@ -137,7 +137,7 @@ namespace ts.server {
137137

138138
function createLogger() {
139139
const cmdLineVerbosity = getLogLevel(findArgument("--logVerbosity"));
140-
return typeof cmdLineVerbosity === "undefined" ? nullLogger : new ConsoleLogger(cmdLineVerbosity);
140+
return typeof cmdLineVerbosity === "undefined" ? nullLogger : new MainProcessLogger(cmdLineVerbosity);
141141
}
142142

143143
function createWebSystem(args: string[]) {

0 commit comments

Comments
 (0)