Package Exports
- winston-3-papertrail
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (winston-3-papertrail) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
A Papertrail transport for winston.
Installation
Installing winston-3-papertrail
$ npm install winston
$ npm install winston-3-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-3-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-3-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-3-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-3-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
});