| 7 | import format from 'format-util'; |
| 8 | |
| 9 | export class OutputChannelLogger implements ILogger { |
| 10 | private readonly homeReplaceRegEx?: RegExp; |
| 11 | private readonly userNameReplaceRegEx?: RegExp; |
| 12 | constructor( |
| 13 | private readonly channel: OutputChannel, |
| 14 | homeRegEx?: RegExp, |
| 15 | userNameRegEx?: RegExp |
| 16 | ) { |
| 17 | this.homeReplaceRegEx = homeRegEx; |
| 18 | this.userNameReplaceRegEx = userNameRegEx; |
| 19 | } |
| 20 | private format(level: string | undefined, message: string, ...data: Arguments) { |
| 21 | let logMessage = level |
| 22 | ? `${getTimeForLogging()} [${level}] ${format(message, ...data)}` |
| 23 | : format(message, ...data); |
| 24 | if (this.homeReplaceRegEx) { |
| 25 | logMessage = logMessage.replace(this.homeReplaceRegEx, '~'); |
| 26 | } |
| 27 | if (this.userNameReplaceRegEx) { |
| 28 | logMessage = logMessage.replace(this.userNameReplaceRegEx, '<username>'); |
| 29 | } |
| 30 | return logMessage; |
| 31 | } |
| 32 | |
| 33 | public error(message: string, ...data: Arguments): void { |
| 34 | this.channel.appendLine(this.format('error', message, ...data)); |
| 35 | } |
| 36 | |
| 37 | public warn(message: string, ...data: Arguments): void { |
| 38 | this.channel.appendLine(this.format('warn', message, ...data)); |
| 39 | } |
| 40 | |
| 41 | public info(message: string, ...data: Arguments): void { |
| 42 | this.channel.appendLine(this.format('info', message, ...data)); |
| 43 | } |
| 44 | |
| 45 | public debug(message: string, ...data: Arguments): void { |
| 46 | this.channel.appendLine(this.format('debug', message, ...data)); |
| 47 | } |
| 48 | |
| 49 | public trace(message: string, ...data: Arguments): void { |
| 50 | this.channel.appendLine(this.format('trace', message, ...data)); |
| 51 | } |
| 52 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 53 | public ci(_message: any, ..._data: Arguments): void { |
| 54 | // |
| 55 | } |
| 56 | } |
nothing calls this directly
no outgoing calls
no test coverage detected