Skip to content

Instantly share code, notes, and snippets.

@derek-watson
Last active August 29, 2015 14:05
Show Gist options
  • Save derek-watson/88057a3a3907ab45617b to your computer and use it in GitHub Desktop.
Save derek-watson/88057a3a3907ab45617b to your computer and use it in GitHub Desktop.
Flexible bunyan logger module
/*
npm install --save bunyan
Basic usage:
var logger = require('./logger')
logger.info('hi')
log.warn({lang: 'fr'}, 'au revoir')
Create specific loggers for various parts of your app,
allowing you to filter the log for just those entries:
var logger = require('./logger').create('apiServer')
logger.info('hi')
log.warn({lang: 'fr'}, 'au revoir')
*/
var path = require('path')
var util = require('util')
var bunyan = require('bunyan')
var streams = []
var logfileTemplate = '../log/%s.log'
var nodeEnv = process.env.NODE_ENV || 'development'
function stdout(level) {
streams.push({ level: level || 'info', stream: process.stdout })
}
function logfile(level) {
var filename = util.format(logfileTemplate, nodeEnv)
streams.push({ level: level || 'info', path: path.resolve(__dirname, filename) })
}
/*
Configure environments here
See https://github.com/trentm/node-bunyan#levels
*/
switch (nodeEnv) {
case 'test':
logfile('info')
break
case 'development':
stdout('debug')
break
case 'staging':
stdout('warn')
break
case 'production':
stdout('error')
break
}
function create(name) {
return bunyan.createLogger({
name: name,
streams: streams,
serializers: {
req: bunyan.stdSerializers.req
}
})
}
var logger = create('default')
module.exports = logger
module.exports.create = create
module.exports.streams = streams
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment