An opinionated winston logger.
Dynamically switch between four winston transports within a node process. Override on a per-instance basis.
npm i --save brinkbit-logger
const logger = require( 'brinkbit-logger' ).configure();
logger.info( 'just logging some stuff' );
Optionally pass an id for retrieval later:
const brinkbitLogger = require( 'brinkbit-logger' );
// default id is 'brinkbit'
brinkbitLogger.configure({ id: 'logger1' });
const logger = brinkbitLogger.get( 'logger1' );
Morgan middleware is exposed for convenience .
const app = require( 'express' )();
app.use( logger.middleware );
Logging levels are configured following RFC5424
{ emerg: 0, alert: 1, crit: 2, error: 3, warning: 4, notice: 5, info: 6, debug: 7 }
The brinkbit-logger is intended to be configured using environment variables. However you can override the global configuration on a per-instance basis like so:
const logger = require( 'brinkbit-logger' ).configure({ logFile: 'customLogFile.log' });
Transports define where logs are sent, as well as several formatting rules.
By default, the transport type is configured based on the NODE_ENV
environment variable.
Optionally override the global configuration on a per-instance basis like so:
const logger = require( 'brinkbit-logger' ).configure({ transport: 'debug' });
The following levels are accepted:
'production'
(default) - writes json to a log file without console output'debug'
- extremely verbose output to the console. Negative performance impact'development'
- reasonable output, designed for regular development usage. Negative performance impact'test'
- only prints out emerg level so you can focus on the console output of your tests
- LOG_FILE
- LOG_SIZE
- LOG_COUNT
info
and higher levels will log to files in production.
- config.logFile
- config.logSize
- config.logCount
crit
and higher levels can log to slack in production.
- SLACK_TEAM
- SLACK_HOOK
- SLACK_CHANNEL
- SLACK_USERNAME
- config.slack.team
- config.slack.hookUrl
- config.slack.critChannel
- config.slack.username
info
and higher levels can log to Papertrail in production.
- PAPERTRAIL_HOST
- PAPERTRAIL_PORT
- config.paperTrail.host
- config.paperTrail.port
- config.paperTrail.program
- config.paperTrail.hostname
The following environment variables are pulled from Dockercloud configuration:
- DOCKERCLOUD_SERVICE_HOSTNAME
- DOCKERCLOUD_CONTAINER_HOSTNAME
- DOCKERCLOUD_NODE_HOSTNAME
- DOCKERCLOUD_STACK_NAME