winston-papertrail
A Papertrail transport for winston.
Installation
Installing npm (node package manager)
$ curl http://npmjs.org/install.sh | sh
Installing winston-papertrail
$ npm install winston
$ npm install winston-papertrail
There are a few required options for logging to Papertrail:
- host: FQDN or IP Address of the Papertrail Service Endpoint
- port: The Endpoint TCP Port
Usage
const winston = require('winston');
const { PapertrailConnection, PapertrailTransport } = require('winston-papertrail');
const papertrailConnection = new PapertrailConnection({
host: 'logs.papertrailapp.com',
port: 12345
})
papertrailConnection.on('error', function(err) {
// Handle, report, or silently ignore connection errors and failures
});
const logger = new winston.createLogger({
transports: [ new PapertrailTransport(papertrailConnection) ]
});
logger.info('this is my message');
There are a number of optional settings:
disableTls
- set totrue
to disable TLS on your transport. Defaults tofalse
level
- The log level to use for this transport, defaults toinfo
levels
- A custom mapping of log levels strings to severity levels, defaults to the mapping ofnpm
levels to RFC5424 severitieshostname
- The hostname for your transport, defaults toos.hostname()
program
- The program for your transport, defaults todefault
facility
- The syslog facility for this transport, defaults todaemon
logFormat
- A function to format your log message before sending, see belowcolorize
- Enable colors in logs, defaults tofalse
inlineMeta
- Inline multi-line messages, defaults tofalse
handleExceptions
- Tell this Transport to handle exceptions, defaults tofalse
flushOnClose
- Flush any queued logs prior to closing/exitingdepth
- max depth for objects dumped by NodeJSutil.inspect
There are also a number of settings for connection failure and retry behavior
attemptsBeforeDecay
- How many retries should be attempted before backing off, defaults to5
maximumAttempts
- How many retries before disabling buffering, defaults to25
connectionDelay
- How long between backoff in milliseconds, defaults to1000
maxDelayBetweenReconnection
- The maximum backoff in milliseconds, defaults to60000
maxBufferSize
- The maximum size of the retry buffer, in bytes, defaults to1048576
Advanced Usage
For more some advanced logging, you can take advantage of custom formatting for Papertrail:
const logger = winston.createLogger({
transports: [
new PapertrailTransport(connection, {
logFormat: function(level, message) {
return '<<<' + level + '>>> ' + message;
}
})
]
});
logger.info('this is my message');
Transport Events
PapertrailConnection
is also capable of emitting events for error
and connect
so you can log to other transports:
papertrailConnection.on('error', err => {
// Do something with the error
});
papertrailConnection.on('connect', () => {
// Do something after the connection to the Papertrail server is established
})
Colorization
The winston-papertrail
transport supports colorization with winston
. Currently, the ANSI codes used for escape sequences are part of the search index, so please be advised when using colorization.
const logger = winston.createLogger({
transports: [
new PapertrailTransport(connection, {
colorize: true
})
]
});
logger.info('Hello from colorized winston');
Closing the transport
winston-papertrail
transport supports closing the transport (and the underlying TLS connection) via the PapertrailConnection#close
method. Thus, you can enable scenarios where your transport automatically closes when you close the winston
logger.
const winston = require('winston');
const { PapertrailConnection, PapertrailTransport } = require('winston-papertrail');
const papertrailConnection = new PapertrailConnection({
host: 'logs.papertrailapp.com',
port: 12345
});
const logger = new winston.createLogger({
transports: [ new PapertrailTransport(papertrailConnection) ]
});
papertrailConnection.on('connect', function() {
logger.info('logging before I close');
logger.close(); // This also closes the underlying connection in the Papertrail transport
});