| 13 | * A log sink that writes log events to the console. |
| 14 | */ |
| 15 | export class ConsoleSink implements LogSink { |
| 16 | readonly #formatter: ConsoleFormatter |
| 17 | |
| 18 | constructor(formatter: ConsoleFormatter) { |
| 19 | this.#formatter = formatter |
| 20 | } |
| 21 | |
| 22 | write(event: LogEvent): void { |
| 23 | const parts = this.#formatter.format(event) |
| 24 | |
| 25 | switch (event.level) { |
| 26 | case 'debug': |
| 27 | console.debug(...parts) |
| 28 | break |
| 29 | |
| 30 | case 'query': |
| 31 | console.log(...parts) |
| 32 | break |
| 33 | |
| 34 | case 'info': |
| 35 | console.info(...parts) |
| 36 | break |
| 37 | |
| 38 | case 'warn': |
| 39 | console.warn(...parts) |
| 40 | break |
| 41 | |
| 42 | case 'error': |
| 43 | console.error(...parts) |
| 44 | break |
| 45 | |
| 46 | default: |
| 47 | throw new Error(`Invalid log level: ${event.level satisfies never}`) |
| 48 | } |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | /** |
| 53 | * A log sink that captures log events in memory. |
nothing calls this directly
no outgoing calls
no test coverage detected