| 21 | } |
| 22 | |
| 23 | export class EmittingLogger implements Logger, IAmDisposable { |
| 24 | private readonly onLogEmitter = new LogEmitter(); |
| 25 | public readonly onLog = (listener: (message: LogMessage) => void) => this.onLogEmitter.onLog(listener); |
| 26 | |
| 27 | private log(message: string, severity: LogSeverity, category = LogCategory.General): void { |
| 28 | this.onLogEmitter.fire(new LogMessageImpl(message, severity, category)); |
| 29 | } |
| 30 | |
| 31 | public info(message: string, category?: LogCategory): void { |
| 32 | this.log(message, LogSeverity.Info, category); |
| 33 | } |
| 34 | public warn(errorOrMessage: any, category?: LogCategory): void { |
| 35 | this.log(errorString(errorOrMessage), LogSeverity.Warn, category); |
| 36 | } |
| 37 | public error(errorOrMessage: any, category?: LogCategory): void { |
| 38 | this.log(errorString(errorOrMessage), LogSeverity.Error, category); |
| 39 | } |
| 40 | |
| 41 | public dispose(): void { |
| 42 | this.onLogEmitter.removeAllListeners(); |
| 43 | } |
| 44 | } |
| 45 | |
| 46 | class LogMessageImpl implements LogMessage { |
| 47 | constructor( |