1
1
import ora , { Ora } from 'ora'
2
+ import fs from 'fs'
2
3
3
4
export enum LogLevel {
4
5
Silent = - 1 ,
@@ -15,12 +16,16 @@ export class Logger {
15
16
constructor ( debug : string ) {
16
17
const levelRange = [ '-1' , '0' , '1' , '2' , '3' , '4' , '5' ]
17
18
this . level = levelRange . indexOf ( debug ) > - 1 ? Number ( debug ) : 3
19
+ this . errorLogFile = './cg-debug.log'
18
20
this . logger = ora ( { isSilent : this . level === LogLevel . Silent } )
19
21
this . spinnerMap = { }
22
+ this . clearLog ( )
20
23
}
21
24
22
25
level : LogLevel
23
26
27
+ errorLogFile : string
28
+
24
29
logger : Ora
25
30
26
31
startText : string
@@ -56,6 +61,18 @@ export class Logger {
56
61
return value
57
62
}
58
63
64
+ private clearLog ( ) {
65
+ if ( this . level >= LogLevel . Trace ) {
66
+ fs . writeFileSync ( this . errorLogFile , '' )
67
+ }
68
+ }
69
+
70
+ private writeLog ( text : string ) {
71
+ if ( this . level >= LogLevel . Trace ) {
72
+ fs . appendFileSync ( this . errorLogFile , `${ text } \n` )
73
+ }
74
+ }
75
+
59
76
startSpinner ( msg ) : void {
60
77
const instance = this . logger . start ( msg )
61
78
this . spinnerMap = { msg, instance}
@@ -99,8 +116,10 @@ export class Logger {
99
116
100
117
error ( msg : string | { [ key : string ] : any } ) : void {
101
118
if ( this . level >= LogLevel . Error ) {
119
+ const parsedMessage = this . parseMessage ( msg )
102
120
this . stopSpinner ( )
103
- this . logger . fail ( this . parseMessage ( msg ) )
121
+ this . logger . fail ( parsedMessage )
122
+ this . writeLog ( parsedMessage )
104
123
this . spinnerMap . instance && this . startSpinner ( this . spinnerMap . msg )
105
124
}
106
125
}
@@ -123,8 +142,10 @@ export class Logger {
123
142
124
143
debug ( msg : string | { [ key : string ] : any } ) : void {
125
144
if ( this . level >= LogLevel . Trace ) {
145
+ const parsedMessage = this . parseMessage ( msg )
126
146
this . stopSpinner ( )
127
- this . logger . info ( this . parseMessage ( msg ) )
147
+ this . logger . info ( parsedMessage )
148
+ this . writeLog ( parsedMessage )
128
149
this . spinnerMap . instance && this . startSpinner ( this . spinnerMap . msg )
129
150
}
130
151
}
0 commit comments