|
1 |
| -import {LogProviderInterface} from "../log-provider.interface"; |
| 1 | +import { LogProviderInterface } from "../log-provider.interface"; |
2 | 2 |
|
3 | 3 | export enum ConsoleLogLevel {
|
4 |
| - TRACE, |
5 |
| - DEBUG, |
6 |
| - INFO, |
7 |
| - WARN, |
8 |
| - ERROR, |
| 4 | + TRACE, |
| 5 | + DEBUG, |
| 6 | + INFO, |
| 7 | + WARN, |
| 8 | + ERROR, |
9 | 9 | }
|
10 | 10 |
|
11 | 11 | export interface ConsoleLogProviderConfig {
|
12 |
| - logLevel: ConsoleLogLevel, |
13 |
| - withTimeStamp: boolean, |
| 12 | + logLevel?: ConsoleLogLevel; |
| 13 | + withTimeStamp?: boolean; |
14 | 14 | }
|
15 | 15 |
|
16 | 16 | const defaultConfig: ConsoleLogProviderConfig = {
|
17 |
| - logLevel: ConsoleLogLevel.INFO, |
18 |
| - withTimeStamp: true |
19 |
| -} |
| 17 | + logLevel: ConsoleLogLevel.INFO, |
| 18 | + withTimeStamp: true, |
| 19 | +}; |
20 | 20 |
|
21 | 21 | export class ConsoleLogProvider implements LogProviderInterface {
|
22 |
| - constructor(private config: ConsoleLogProviderConfig = defaultConfig) { |
23 |
| - this.trace = this.trace.bind(this); |
24 |
| - this.debug = this.debug.bind(this); |
25 |
| - this.info = this.info.bind(this); |
26 |
| - this.warn = this.warn.bind(this); |
27 |
| - this.error = this.error.bind(this); |
28 |
| - } |
| 22 | + private readonly logLevel: ConsoleLogLevel; |
| 23 | + private readonly withTimeStamp: boolean; |
29 | 24 |
|
30 |
| - private log(logLevel: ConsoleLogLevel, message: string | Error, data?: {}) { |
31 |
| - if (logLevel >= this.config.logLevel) { |
32 |
| - const timeStampPrefix = `${new Date().toISOString()} - `; |
33 |
| - const extendedMessage = `${(this.config.withTimeStamp == null || this.config.withTimeStamp) ? timeStampPrefix : ''}${ConsoleLogLevel[logLevel]} - ${(message instanceof Error) ? message.message : message}`; |
34 |
| - switch (logLevel) { |
35 |
| - case ConsoleLogLevel.TRACE: |
36 |
| - if (data) { |
37 |
| - console.trace(extendedMessage, data); |
38 |
| - } else { |
39 |
| - console.trace(extendedMessage); |
40 |
| - } |
41 |
| - break; |
42 |
| - case ConsoleLogLevel.DEBUG: |
43 |
| - if (data) { |
44 |
| - console.debug(extendedMessage, data); |
45 |
| - } else { |
46 |
| - console.debug(extendedMessage); |
47 |
| - } |
48 |
| - break; |
49 |
| - case ConsoleLogLevel.INFO: |
50 |
| - if (data) { |
51 |
| - console.info(extendedMessage, data); |
52 |
| - } else { |
53 |
| - console.info(extendedMessage); |
54 |
| - } |
55 |
| - break; |
56 |
| - case ConsoleLogLevel.WARN: |
57 |
| - if (data) { |
58 |
| - console.warn(extendedMessage, data); |
59 |
| - } else { |
60 |
| - console.warn(extendedMessage); |
61 |
| - } |
62 |
| - break; |
63 |
| - case ConsoleLogLevel.ERROR: |
64 |
| - (message as Error).message = extendedMessage; |
65 |
| - if (data) { |
66 |
| - console.error(message, data); |
67 |
| - } else { |
68 |
| - console.error(message); |
69 |
| - } |
70 |
| - break; |
71 |
| - } |
72 |
| - } |
73 |
| - } |
| 25 | + constructor(config: ConsoleLogProviderConfig = defaultConfig) { |
| 26 | + this.trace = this.trace.bind(this); |
| 27 | + this.debug = this.debug.bind(this); |
| 28 | + this.info = this.info.bind(this); |
| 29 | + this.warn = this.warn.bind(this); |
| 30 | + this.error = this.error.bind(this); |
| 31 | + this.logLevel = config.logLevel ?? ConsoleLogLevel.INFO; |
| 32 | + this.withTimeStamp = config.withTimeStamp ?? true; |
| 33 | + } |
74 | 34 |
|
75 |
| - public trace(message: string, data?: {}) { |
76 |
| - this.log(ConsoleLogLevel.TRACE, message, data); |
| 35 | + private log(logLevel: ConsoleLogLevel, message: string | Error, data?: {}) { |
| 36 | + if (logLevel >= this.logLevel) { |
| 37 | + const timeStampPrefix = `${new Date().toISOString()} - `; |
| 38 | + const extendedMessage = `${ |
| 39 | + this.withTimeStamp == null || this.withTimeStamp ? timeStampPrefix : "" |
| 40 | + }${ConsoleLogLevel[logLevel]} - ${ |
| 41 | + message instanceof Error ? message.message : message |
| 42 | + }`; |
| 43 | + switch (logLevel) { |
| 44 | + case ConsoleLogLevel.TRACE: |
| 45 | + if (data) { |
| 46 | + console.trace(extendedMessage, data); |
| 47 | + } else { |
| 48 | + console.trace(extendedMessage); |
| 49 | + } |
| 50 | + break; |
| 51 | + case ConsoleLogLevel.DEBUG: |
| 52 | + if (data) { |
| 53 | + console.debug(extendedMessage, data); |
| 54 | + } else { |
| 55 | + console.debug(extendedMessage); |
| 56 | + } |
| 57 | + break; |
| 58 | + case ConsoleLogLevel.INFO: |
| 59 | + if (data) { |
| 60 | + console.info(extendedMessage, data); |
| 61 | + } else { |
| 62 | + console.info(extendedMessage); |
| 63 | + } |
| 64 | + break; |
| 65 | + case ConsoleLogLevel.WARN: |
| 66 | + if (data) { |
| 67 | + console.warn(extendedMessage, data); |
| 68 | + } else { |
| 69 | + console.warn(extendedMessage); |
| 70 | + } |
| 71 | + break; |
| 72 | + case ConsoleLogLevel.ERROR: |
| 73 | + (message as Error).message = extendedMessage; |
| 74 | + if (data) { |
| 75 | + console.error(message, data); |
| 76 | + } else { |
| 77 | + console.error(message); |
| 78 | + } |
| 79 | + break; |
| 80 | + } |
77 | 81 | }
|
| 82 | + } |
78 | 83 |
|
79 |
| - public debug(message: string, data?: {}) { |
80 |
| - this.log(ConsoleLogLevel.DEBUG, message, data); |
81 |
| - } |
| 84 | + public trace(message: string, data?: {}) { |
| 85 | + this.log(ConsoleLogLevel.TRACE, message, data); |
| 86 | + } |
82 | 87 |
|
83 |
| - public info(message: string, data?: {}) { |
84 |
| - this.log(ConsoleLogLevel.INFO, message, data); |
85 |
| - } |
| 88 | + public debug(message: string, data?: {}) { |
| 89 | + this.log(ConsoleLogLevel.DEBUG, message, data); |
| 90 | + } |
86 | 91 |
|
87 |
| - public warn(message: string, data?: {}) { |
88 |
| - this.log(ConsoleLogLevel.WARN, message, data); |
89 |
| - } |
| 92 | + public info(message: string, data?: {}) { |
| 93 | + this.log(ConsoleLogLevel.INFO, message, data); |
| 94 | + } |
90 | 95 |
|
91 |
| - public error(message: Error, data?: {}) { |
92 |
| - this.log(ConsoleLogLevel.ERROR, message, data); |
93 |
| - } |
94 |
| -} |
| 96 | + public warn(message: string, data?: {}) { |
| 97 | + this.log(ConsoleLogLevel.WARN, message, data); |
| 98 | + } |
95 | 99 |
|
| 100 | + public error(message: Error, data?: {}) { |
| 101 | + this.log(ConsoleLogLevel.ERROR, message, data); |
| 102 | + } |
| 103 | +} |
0 commit comments