11'use strict' ;
22
33const fs = require ( 'fs' ) ;
4- const events = require ( 'events' ) ;
4+ const { EventEmitter } = require ( 'events' ) ;
55const common = require ( '@metarhia/common' ) ;
66const { WritableFileStream } = require ( 'metastreams' ) ;
77const concolor = require ( 'concolor' ) ;
@@ -108,7 +108,7 @@ class ApplicationLogger {
108108 }
109109}
110110
111- class Logger extends events . EventEmitter {
111+ class Logger extends EventEmitter {
112112 // path <string> log directory
113113 // node <string> nodeId
114114 // writeInterval <number> flush log to disk interval
@@ -179,27 +179,26 @@ class Logger extends events.EventEmitter {
179179 this . emit ( 'close' ) ;
180180 return ;
181181 }
182- const stream = this . stream ;
182+ const { stream } = this ;
183183 if ( ! stream || stream . destroyed || stream . closed ) return ;
184184 this . flush ( err => {
185- if ( err ) return ;
185+ if ( err ) {
186+ process . stdout . write ( `${ err . stack } \n` ) ;
187+ this . emit ( 'error' , err ) ;
188+ return ;
189+ }
186190 this . active = false ;
187- this . stream . end ( ( ) => {
191+ stream . end ( ( ) => {
188192 clearInterval ( this . flushTimer ) ;
189193 clearTimeout ( this . reopenTimer ) ;
190194 this . flushTimer = null ;
191195 this . reopenTimer = null ;
192196 const fileName = this . file ;
193197 this . emit ( 'close' ) ;
194198 fs . stat ( fileName , ( err , stats ) => {
195- if ( err ) {
196- process . stdout . write ( `${ err } \n` ) ;
197- return ;
198- }
199+ if ( err ) return ;
199200 if ( stats . size > 0 ) return ;
200- fs . unlink ( this . file , err => {
201- process . stdout . write ( `${ err } \n` ) ;
202- } ) ;
201+ fs . unlink ( this . file , ( ) => { } ) ;
203202 } ) ;
204203 } ) ;
205204 } ) ;
@@ -209,28 +208,23 @@ class Logger extends events.EventEmitter {
209208 if ( ! this . keepDays ) return ;
210209 fs . readdir ( this . path , ( err , files ) => {
211210 if ( err ) {
212- process . stdout . write ( `${ err } \n` ) ;
211+ process . stdout . write ( `${ err . stack } \n` ) ;
212+ this . emit ( 'error' , err ) ;
213213 return ;
214214 }
215215 const now = new Date ( ) ;
216- const date = new Date (
217- now . getUTCFullYear ( ) ,
218- now . getUTCMonth ( ) ,
219- now . getUTCDate ( ) ,
220- 0 ,
221- 0 ,
222- 0 ,
223- 0
224- ) ;
216+ const year = now . getUTCFullYear ( ) ;
217+ const month = now . getUTCMonth ( ) ;
218+ const day = now . getUTCDate ( ) ;
219+ const date = new Date ( year , month , day , 0 , 0 , 0 , 0 ) ;
225220 const time = date . getTime ( ) ;
226- let i , fileName , fileTime , fileAge ;
227- for ( i in files ) {
228- fileName = files [ i ] ;
229- fileTime = new Date ( fileName . substring ( 0 , 10 ) ) . getTime ( ) ;
230- fileAge = Math . floor ( ( time - fileTime ) / DAY_MILLISECONDS ) ;
221+ for ( const fileName of files ) {
222+ const fileTime = new Date ( fileName . substring ( 0 , 10 ) ) . getTime ( ) ;
223+ const fileAge = Math . floor ( ( time - fileTime ) / DAY_MILLISECONDS ) ;
231224 if ( fileAge > 1 && fileAge > this . keepDays - 1 ) {
232225 fs . unlink ( this . path + '/' + fileName , err => {
233- process . stdout . write ( `${ err } \n` ) ;
226+ process . stdout . write ( `${ err . stack } \n` ) ;
227+ this . emit ( 'error' , err ) ;
234228 } ) ;
235229 }
236230 }
@@ -268,8 +262,9 @@ class Logger extends events.EventEmitter {
268262 return ;
269263 }
270264 if ( ! this . active ) {
271- if ( callback )
272- callback ( new Error ( 'Cannot flush log buffer: logger is not opened' ) ) ;
265+ const err = new Error ( 'Cannot flush log buffer: logger is not opened' ) ;
266+ this . emit ( 'error' , err ) ;
267+ if ( callback ) callback ( err ) ;
273268 return ;
274269 }
275270 this . lock = true ;
0 commit comments