1
1
import chalk from "chalk" ;
2
2
3
- export enum LogLevel {
4
- DEBUG ,
5
- INFO ,
6
- WARN ,
7
- ERROR ,
8
- }
3
+ export const LogLevel = {
4
+ DEBUG : "DEBUG" as const ,
5
+ INFO : "INFO" as const ,
6
+ WARN : "WARN" as const ,
7
+ ERROR : "ERROR" as const ,
8
+ } ;
9
+
10
+ export type LogLevelType = ( typeof LogLevel ) [ keyof typeof LogLevel ] ;
9
11
10
12
export class Logger {
11
13
private static instance : Logger ;
12
- private currentLevel : LogLevel = LogLevel . INFO ;
14
+ private currentLevel : LogLevelType = LogLevel . INFO ; // Default level
13
15
14
16
private constructor ( ) { }
15
17
@@ -20,16 +22,26 @@ export class Logger {
20
22
return Logger . instance ;
21
23
}
22
24
23
- getLevel ( ) : LogLevel {
25
+ getLevel ( ) : LogLevelType {
24
26
return this . currentLevel ;
25
27
}
26
28
27
- setLevel ( level : LogLevel ) {
29
+ setLevel ( level : LogLevelType ) {
28
30
this . currentLevel = level ;
29
31
}
30
32
31
- private log ( level : LogLevel , color : chalk . ChalkFunction , tag : string , ...messages : any [ ] ) {
32
- if ( this . currentLevel <= level ) {
33
+ private logLevelValue ( level : LogLevelType ) : number {
34
+ const levels = {
35
+ [ LogLevel . DEBUG ] : 0 ,
36
+ [ LogLevel . INFO ] : 1 ,
37
+ [ LogLevel . WARN ] : 2 ,
38
+ [ LogLevel . ERROR ] : 3 ,
39
+ } ;
40
+ return levels [ level ] ;
41
+ }
42
+
43
+ private log ( level : LogLevelType , color : ( str : string ) => string , tag : string , ...messages : any [ ] ) {
44
+ if ( this . logLevelValue ( this . currentLevel ) <= this . logLevelValue ( level ) ) {
33
45
const formattedMessages = messages
34
46
. map ( ( msg ) => ( typeof msg === "object" ? JSON . stringify ( msg ) : msg ) )
35
47
. join ( " " ) ;
@@ -38,19 +50,19 @@ export class Logger {
38
50
}
39
51
40
52
debug ( ...messages : any [ ] ) {
41
- this . log ( LogLevel . DEBUG , chalk . gray , " DEBUG" , ...messages ) ;
53
+ this . log ( LogLevel . DEBUG , chalk . gray , LogLevel . DEBUG , ...messages ) ;
42
54
}
43
55
44
56
info ( ...messages : any [ ] ) {
45
- this . log ( LogLevel . INFO , chalk . blue , " INFO" , ...messages ) ;
57
+ this . log ( LogLevel . INFO , chalk . blue , LogLevel . INFO , ...messages ) ;
46
58
}
47
59
48
60
warn ( ...messages : any [ ] ) {
49
- this . log ( LogLevel . WARN , chalk . yellow , " WARN" , ...messages ) ;
61
+ this . log ( LogLevel . WARN , chalk . yellow , LogLevel . WARN , ...messages ) ;
50
62
}
51
63
52
64
error ( ...messages : any [ ] ) {
53
- this . log ( LogLevel . ERROR , chalk . red , " ERROR" , ...messages ) ;
65
+ this . log ( LogLevel . ERROR , chalk . red , LogLevel . ERROR , ...messages ) ;
54
66
}
55
67
56
68
command ( ...messages : any [ ] ) {
0 commit comments