##// END OF EJS Templates
StringBuilder, TextWriter, ConsoleWriter tests
StringBuilder, TextWriter, ConsoleWriter tests

File last commit:

r82:025f02eff3b2 v1.3.0 default
r82:025f02eff3b2 v1.3.0 default
Show More
ConsoleLogger.ts
41 lines | 1.5 KiB | video/mp2t | TypeScriptLexer
/ src / main / ts / log / writers / ConsoleLogger.ts
cin
StringBuilder, TextWriter, ConsoleWriter tests
r82 import { IObservable, IDestroyable, ICancellation } from "../../interfaces";
import { TraceEvent, LogLevel, WarnLevel, DebugLevel } from "../TraceSource";
import { Cancellation } from "../../Cancellation";
import { destroy, argumentNotNull } from "../../safe";
import { ConsoleWriter } from "../ConsoleWriter";
export class ConsoleLogger implements IDestroyable {
private readonly _subscriptions = new Array<IDestroyable>();
private readonly _writer: ConsoleWriter;
constructor(writer = ConsoleWriter.default) {
argumentNotNull(writer, "writer");
this._writer = writer;
}
writeEvents(source: IObservable<TraceEvent>, ct: ICancellation = Cancellation.none) {
const subscription = source.on(this.writeEvent.bind(this));
if (ct.isSupported()) {
ct.register(subscription.destroy.bind(subscription));
}
this._subscriptions.push(subscription);
}
writeEvent(next: TraceEvent) {
if (next.level >= DebugLevel) {
this._writer.setLogLevel("debug");
} else if (next.level >= LogLevel) {
this._writer.setLogLevel("log");
} else if (next.level >= WarnLevel) {
this._writer.setLogLevel("warn");
} else {
this._writer.setLogLevel("error");
}
this._writer.write("{0}: ", next.source.id);
this._writer.writeLine(next.message, ...next.args);
}
destroy() {
this._subscriptions.forEach(destroy);
}
}