-
Notifications
You must be signed in to change notification settings - Fork 16
/
logging.ts
74 lines (52 loc) · 1.78 KB
/
logging.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* Implement a class implementing this interface to use your own logger.
* As this is also implemented by log4js, you can directly inject your log4js setup.
*/
export interface LoggerProvider {
getLogger(categoryName?: string): Logger;
}
export interface Logger {
level: string
isLevelEnabled(level?: string): boolean;
isTraceEnabled(): boolean;
isDebugEnabled(): boolean;
isInfoEnabled(): boolean;
isWarnEnabled(): boolean;
isErrorEnabled(): boolean;
isFatalEnabled(): boolean;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string, ...args: any[]): void;
fatal(message: string, ...args: any[]): void;
}
export class ConsoleLoggerProvider implements LoggerProvider {
constructor(private prefix?: string) {
}
getLogger(categoryName?: string | undefined): Logger {
return new ConsoleLogger((this.prefix ? this.prefix + ': ' : '') + (categoryName ? categoryName + ': ' : ''));
}
}
export class ConsoleLogger implements Logger {
constructor(private prefix?: string) {
}
private _log(message: string, ...args: any[]): void {
console.log((this.prefix || '') + message, ...args);
}
trace = this._log;
debug = this._log;
info = this._log;
warn = this._log;
error = this._log;
fatal = this._log;
level = 'trace';
isLevelEnabled = () => true;
isTraceEnabled = () => true;
isDebugEnabled = () => true;
isInfoEnabled = () => true;
isWarnEnabled = () => true;
isErrorEnabled = () => true;
isFatalEnabled = () => true;
}
export const DEFAULT_LOGGER_PROVIDER = new ConsoleLoggerProvider();