Code Monkey home page Code Monkey logo

bunlogger's Introduction

bunlogger

express logging middlewares built on bunyan and rotatelog-stream

Installation

$ npm install bunlogger --save

Features

  1. app.use(logger.connect()) middleware will populate the req.log, which is actually a child of the bunyan logger, simply req.log.info('...') will share the same cor_id in the access log and error log.

  2. req.log.fatal(), req.log.error() will log error into error log file separated from access log.

  3. app.use(logger.onError()) middleware will skip error which was logged by req.log.fatal(), req.log.error() or req.log.warn(), so no duplicated error logging. In addition, error with no status or status >= 500, will be logged in error level. Error with status between 400~499, will be logged in warn level.

  4. elapsed show the time spent in this req.

  5. Integrate with rotatelog-stream for rotating logs to files.

  6. See logging on the console in developing stage.

Quick Start

express

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.

Create logger

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');

Print Error

A handy tool to replace console.error(err).

const printErr = require('bunlogger').printErr;

try {
  new NotExist();
} catch (er) {
  printErr(er)
}

cli

$ DEBUG=* node bin/www

Options

  • 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

bunlogger's People

Contributors

benpptung avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.