express logging middlewares built on bunyan and rotatelog-stream
$ npm install bunlogger --save
-
app.use(logger.connect())middleware will populate thereq.log, which is actually a child of the bunyan logger, simplyreq.log.info('...')will share the samecor_idin theaccess loganderror log. -
req.log.fatal(),req.log.error()will log error intoerror logfile separated fromaccess log. -
app.use(logger.onError())middleware will skip error which was logged byreq.log.fatal(),req.log.error()orreq.log.warn(), so no duplicated error logging. In addition, error with no status or status >= 500, will be logged inerror level. Error with status between 400~499, will be logged inwarn level. -
elapsedshow the time spent in thisreq. -
Integrate with rotatelog-stream for rotating logs to files.
-
See logging on the console in developing stage.
const express = require('express');
const AppLogger = require('bunlogger');
const logDir = require('path').join(__dirname, 'log');
var app = express();
app.log = new AppLogger({dev: true, logDir});
populate req.log and log all accesses
app.use(app.log.connect());
Catch express next(err) for logging, but skip if req.log got called above warn level.
app.use(app.log.onError());
log directory created and bunlogger.log, bunlogger-error.log created.
Finally, render req.cor_id in the final error handler, so the customer can contact you with cor_id for help.
logger is using rotatelog-stream for rotating logs.
const Logger = require('..').Logger;
const join = require('path').join;
var log = new Logger({logDir: join(__dirname, 'log')});
log.info('hi info');
log.warn('hi warn');
log.error('hi error');
A handy tool to replace console.error(err).
const printErr = require('bunlogger').printErr;
try {
new NotExist();
} catch (er) {
printErr(er)
}
$ DEBUG=* node bin/www
- name: {String},
- logDir: 'path/to/log/directory' - directory to save log files
- keep: {Number} - how many log files keep. See rotatelog-stream
- maxsize: {Number} - max filesize allowed. See rotatelog-stream
- dev: {Boolean} - Pipe logs to
process.stdoutfor development, so we can see how logging file looks like in console. - streams: {Array} - additional streams for Bunyan