@@ -59,13 +59,17 @@ class Subscription {
5959export const logSubscription = new Subscription ( ) ;
6060
6161export class LogWrapper implements ILogWrapper {
62- fileLogEnabled = true ;
62+ fileLogEnabled = false ;
6363 consoleLogEnabled = true ;
6464 logger : winston . Logger ;
6565
66+ private logPath : string ;
67+ private fileTransportAdded = false ;
68+ private fileLogLevel : string = LogLevel . DEBUG ;
69+
6670 constructor ( logDir : string ) {
6771 const filename = `${ getFormattedTimestamp ( ) } .log` ;
68- const logPath = path . join ( logDir , filename ) ;
72+ this . logPath = path . join ( logDir , filename ) ;
6973
7074 this . logger = winston . createLogger ( {
7175 level : 'debug' ,
@@ -77,12 +81,6 @@ export class LogWrapper implements ILogWrapper {
7781 } )
7882 ) ,
7983 transports : [
80- new transports . File ( {
81- filename : logPath ,
82- level : 'debug' ,
83- maxsize : 5 * 1024 * 1024 , // 5MB
84- maxFiles : 5 ,
85- } ) ,
8684 new transports . Console ( {
8785 format : format . combine (
8886 format . colorize ( ) ,
@@ -107,7 +105,7 @@ export class LogWrapper implements ILogWrapper {
107105 this . deleteOldLogFile ( filePath , oneWeekAgo ) ;
108106 } ) ;
109107 } ) . catch ( ( err ) => {
110- this . logger . error ( 'Failed to read log directory' , err ) ;
108+ this . logError ( 'Failed to read log directory' , err ) ;
111109 } ) ;
112110 }
113111
@@ -117,21 +115,22 @@ export class LogWrapper implements ILogWrapper {
117115 fs . unlink ( filePath ) . catch ( ( err ) => {
118116 if ( err ) {
119117 if ( err . code === 'ENOENT' ) {
120- this . logger . warn ( `File already deleted: ${ filePath } ` ) ;
118+ this . logWarn ( `File already deleted: ${ filePath } ` ) ;
121119 } else {
122- this . logger . error ( 'Failed to delete old log file' , err ) ;
120+ this . logError ( 'Failed to delete old log file' , err ) ;
123121 }
124122 } else {
125- this . logger . info ( `Deleted old log file: ${ filePath } ` ) ;
123+ this . log ( `Deleted old log file: ${ filePath } ` ) ;
126124 }
127125 } ) ;
128126 }
129127 } ) . catch ( ( err ) => {
130- this . logger . error ( 'Failed to get file stats' , err ) ;
128+ this . logError ( 'Failed to get file stats' , err ) ;
131129 } ) ;
132130 }
133131
134132 setFileAndConsoleLogLevel ( fileLogLevel : LogLevel , consoleLogLevel : LogLevel ) {
133+ this . fileLogLevel = fileLogLevel ;
135134 this . logger . transports . forEach ( ( transport ) => {
136135 if ( transport instanceof transports . File ) {
137136 transport . level = fileLogLevel ;
@@ -148,6 +147,15 @@ export class LogWrapper implements ILogWrapper {
148147
149148 setFileLogEnabled ( isEnabled : boolean ) {
150149 this . fileLogEnabled = isEnabled ;
150+ if ( isEnabled && ! this . fileTransportAdded ) {
151+ this . fileTransportAdded = true ;
152+ this . logger . add ( new transports . File ( {
153+ filename : this . logPath ,
154+ level : this . fileLogLevel ,
155+ maxsize : 5 * 1024 * 1024 , // 5MB
156+ maxFiles : 5 ,
157+ } ) ) ;
158+ }
151159 this . logger . transports . forEach ( ( transport ) => {
152160 if ( transport instanceof transports . File ) {
153161 transport . silent = ! isEnabled ;
@@ -178,14 +186,16 @@ export class LogWrapper implements ILogWrapper {
178186 }
179187
180188 _log ( level : LogLevel , ...args : any [ ] ) {
181- const message = this . formatMsg ( args ) ;
182- if ( this . consoleLogEnabled && this . fileLogEnabled ) {
183- this . logger . log ( level , message ) ;
184- } else if ( this . consoleLogEnabled ) {
185- this . logger . log ( level , message ) ;
186- } else if ( this . fileLogEnabled ) {
187- // eslint-disable-next-line no-control-regex
188- this . logger . log ( level , message . replace ( / \x1B [ @ - _ ] [ 0 - ? ] * [ - / ] * [ @ - ~ ] / g, '' ) ) ;
189+ if ( this . consoleLogEnabled || this . fileLogEnabled ) {
190+ const message = this . formatMsg ( args ) ;
191+ if ( this . consoleLogEnabled && this . fileLogEnabled ) {
192+ this . logger . log ( level , message ) ;
193+ } else if ( this . consoleLogEnabled ) {
194+ this . logger . log ( level , message ) ;
195+ } else if ( this . fileLogEnabled ) {
196+ // eslint-disable-next-line no-control-regex
197+ this . logger . log ( level , message . replace ( / \x1B [ @ - _ ] [ 0 - ? ] * [ - / ] * [ @ - ~ ] / g, '' ) ) ;
198+ }
189199 }
190200 logSubscription . notify ( JSON . stringify ( { level, message } ) ) ;
191201 }
0 commit comments