log4js-node/slack

Message is not sent if shutdown immediately

honeroku opened this issue · 1 comments

Overview

Since this module doesn't have shutdown function, request to slack is not reached if log4js.shutdown() is called and process is terminated right after message event.

For example:
https://github.com/expressjs/generator/blob/master/templates/js/www.ejs#L68
When I replace this logging with log4js + slack appender, it will not notify to slack.
Even if I put process.exit(1) within shutdown callback like

const log4js = require('log4js');
const logger = log4js.getLogger();

logger.error(bind + ' requires elevated privileges');
log4js.shutdown(() => {
  process.exit(1);
});

it still won't wait process.exit() since slack appender doesn't support it.

As seen in log4js-node, it checks function existence.
https://github.com/log4js-node/log4js-node/blob/master/lib/log4js.js#L117

Appendix

If following proposal diff looks good, I'll make Pull Req.
master...honeroku:feature-support-shutdown

It doesn't guarantee that all request is done, but I suppose 1sec is enough (or even too much) for slack api.
And I don't want over-decorate this tiny module, so I made minimum support.