Skip to content

log4js.shutdown() not working properly - Error [ERR_STREAM_WRITE_AFTER_END]: write after end #1005

@thernstig

Description

@thernstig

This was first brought up here #788, and I've upgraded to the latest version and the problem still persists.

log4js does not properly write to the file, it seems to close the stream flushing out the latest input, as seen by log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server-config.log, error happened Error [ERR_STREAM_WRITE_AFTER_END]: write after end.

Code

function handleSignals() {
  // Handle e.g. ctrl+c and other graceful signals to exit
  ['SIGINT', 'SIGTERM'].forEach((signal) =>
    process.on(signal, (code) => {
      logger.info(
        `Exiting with code: ${code}. Gracefully cleaning up, please wait...`
      );
      shutdown(code);
    })
  );
}

function shutdown(exitCode) {
  process.exitCode = exitCode;
  // Make sure all logs have been written to files, stdout etc.
  log4js.shutdown(() => {
    console.log('### this is printed');
    // This should be removed when we handle graceful shutdown of all services
    process.exit(exitCode);
  });
}

Output

[2020-05-05T10:20:13.893+0200] [INFO] server - Exiting with code: SIGINT. Gracefully cleaning up, please wait...
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server-config.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/security/projectA-server-audit.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server-config.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/security/projectA-server-audit.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/log/projectA-server-config.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
log4js.fileAppender - Writing to file /home/userA/code/projectA/security/projectA-server-audit.log, error happened  Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at writeAfterEnd (_stream_writable.js:257:14)
    at RollingFileStream.Writable.write (_stream_writable.js:306:5)
    at RollingFileStream.Writable.end (_stream_writable.js:617:10)
    at Function.app.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/appenders/file.js:72:12)
    at /home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:59
    at Array.forEach (<anonymous>)
    at Object.shutdown (/home/userA/code/projectA/server/node_modules/log4js/lib/log4js.js:117:44)
    at shutdown (/home/userA/code/projectA/server/shutdown.js:18:10)
    at process.<anonymous> (/home/userA/code/projectA/server/signals.js:17:7)
    at process.emit (events.js:223:5) {
  code: 'ERR_STREAM_WRITE_AFTER_END'
}
### this is printed
npm run start:server exited with code SIGINT

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions