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_id
in theaccess log
anderror log
. -
req.log.fatal()
,req.log.error()
will log error intoerror log
file 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
. -
elapsed
show 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.stdout
for development, so we can see how logging file looks like in console. - streams: {Array} - additional streams for Bunyan