1
+ /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function */
2
+
3
+ import EventEmitter from 'events' ;
4
+ import JSLogger , { ILogger , ILoggerOpts , ILogHandler , ILogLevel } from 'js-logger' ;
5
+ import type { GlobalLogger } from 'js-logger' ;
6
+
7
+ export class LoggerClass extends EventEmitter implements GlobalLogger {
8
+ TRACE : ILogLevel ;
9
+ DEBUG : ILogLevel ;
10
+ INFO : ILogLevel ;
11
+ TIME : ILogLevel ;
12
+ WARN : ILogLevel ;
13
+ ERROR : ILogLevel ;
14
+ OFF : ILogLevel ;
15
+
16
+ constructor ( ) {
17
+ super ( ) ;
18
+
19
+ JSLogger . useDefaults ( {
20
+ defaultLevel : JSLogger . TRACE ,
21
+ formatter : function ( messages : any , ctx ) {
22
+ let color ;
23
+ if ( ctx . level === JSLogger . TRACE ) color = '\x1b[91m' ;
24
+ if ( ctx . level === JSLogger . DEBUG ) color = '\x1b[2m' ;
25
+ if ( ctx . level === JSLogger . INFO ) color = '\x1b[36m' ;
26
+ if ( ctx . level === JSLogger . TIME ) color = '\x1b[97m' ;
27
+ if ( ctx . level === JSLogger . WARN ) color = '\x1b[93m' ;
28
+ if ( ctx . level === JSLogger . ERROR ) color = '\x1b[91m' ;
29
+
30
+ const date = new Date ( ) ;
31
+ messages [ 0 ] = `${ color } [${ date . getHours ( ) } :${ date . getMinutes ( ) } :${ date . getSeconds ( ) } /${ ctx . level . name } ]\x1b[0m ${
32
+ messages [ 0 ]
33
+ } `;
34
+ } ,
35
+ } ) ;
36
+
37
+ Object . assign ( this , JSLogger ) ;
38
+ }
39
+
40
+ // Only typings, Object.assign goes brooooo
41
+ useDefaults ( options ?: ILoggerOpts ) : void { }
42
+ setHandler ( logHandler : ILogHandler ) : void { }
43
+ get ( name : string ) : ILogger { return JSLogger . get ( name ) ; }
44
+ createDefaultHandler ( options ?: { formatter ?: ILogHandler } ) : ILogHandler { return JSLogger . createDefaultHandler ( options ) ; }
45
+
46
+ trace ( ...x : any [ ] ) : void { }
47
+ debug ( ...x : any [ ] ) : void { }
48
+ info ( ...x : any [ ] ) : void { }
49
+ log ( ...x : any [ ] ) : void { }
50
+ warn ( ...x : any [ ] ) : void { }
51
+ error ( ...x : any [ ] ) : void { }
52
+ time ( label : string ) : void { }
53
+ timeEnd ( label : string ) : void { }
54
+
55
+ setLevel ( level : ILogLevel ) : void { }
56
+ getLevel ( ) : ILogLevel { return JSLogger . getLevel ( ) ; }
57
+ enabledFor ( level : ILogLevel ) : boolean { return JSLogger . enabledFor ( level ) ; }
58
+ }
59
+
60
+ export const Logger = new LoggerClass ( ) ;
0 commit comments