@@ -3,13 +3,29 @@ const os = require('os');
33
44const eol = os . EOL ;
55
6+ function openTheStream ( filename , pattern , options ) {
7+ const stream = new streams . DateRollingFileStream (
8+ filename ,
9+ pattern ,
10+ options
11+ ) ;
12+ stream . on ( 'error' , ( err ) => {
13+ console . error ( 'log4js.dateFileAppender - Writing to file %s, error happened ' , filename , err ) ; //eslint-disable-line
14+ } ) ;
15+ stream . on ( "drain" , ( ) => {
16+ process . emit ( "log4js:pause" , false ) ;
17+ } ) ;
18+ return stream ;
19+ }
20+
621/**
722 * File appender that rolls files according to a date pattern.
8- * @filename base filename.
9- * @pattern the format that will be added to the end of filename when rolling,
23+ * @param filename base filename.
24+ * @param pattern the format that will be added to the end of filename when rolling,
1025 * also used to check when to roll files - defaults to '.yyyy-MM-dd'
11- * @layout layout function for log messages - defaults to basicLayout
12- * @timezoneOffset optional timezone offset in minutes - defaults to system local
26+ * @param layout layout function for log messages - defaults to basicLayout
27+ * @param options - options to be passed to the underlying stream
28+ * @param timezoneOffset - optional timezone offset in minutes (default system local)
1329 */
1430function appender (
1531 filename ,
@@ -22,35 +38,19 @@ function appender(
2238 // options should work for dateFile as well.
2339 options . maxSize = options . maxLogSize ;
2440
25- let alive = true ;
26-
27- const logFile = new streams . DateRollingFileStream (
28- filename ,
29- pattern ,
30- options
31- ) ;
32-
33- logFile . on ( 'error' , ( err ) => {
34- alive = false ;
35- console . error ( 'log4js.dateFileAppender - Writing to file %s, error happened ' , filename , err ) ; //eslint-disable-line
36- } ) ;
37- logFile . on ( "drain" , ( ) => {
38- process . emit ( "log4js:pause" , false ) ;
39- } ) ;
41+ const writer = openTheStream ( filename , pattern , options ) ;
4042
4143 const app = function ( logEvent ) {
42- if ( ! alive ) {
44+ if ( ! writer . writable ) {
4345 return ;
4446 }
45- if ( ! logFile . write ( layout ( logEvent , timezoneOffset ) + eol , "utf8" ) ) {
47+ if ( ! writer . write ( layout ( logEvent , timezoneOffset ) + eol , "utf8" ) ) {
4648 process . emit ( "log4js:pause" , true ) ;
4749 }
4850 } ;
4951
5052 app . shutdown = function ( complete ) {
51- logFile . write ( '' , 'utf-8' , ( ) => {
52- logFile . end ( complete ) ;
53- } ) ;
53+ writer . end ( '' , 'utf-8' , complete ) ;
5454 } ;
5555
5656 return app ;
0 commit comments