JSPM

winston-3-papertrail

1.0.7
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 381
  • Score
    100M100P100Q94691F

A Papertrail transport for winston. Fork of http://github.com/kenperkins/winston-papertrail.git

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 to true to disable TLS on your transport. Defaults to false
  • level - The log level to use for this transport, defaults to info
  • levels - A custom mapping of log levels strings to severity levels, defaults to the mapping of npm levels to RFC5424 severities
  • hostname - The hostname for your transport, defaults to os.hostname()
  • program - The program for your transport, defaults to default
  • facility - The syslog facility for this transport, defaults to daemon
  • logFormat - A function to format your log message before sending, see below
  • colorize - Enable colors in logs, defaults to false
  • inlineMeta - Inline multi-line messages, defaults to false
  • handleExceptions - Tell this Transport to handle exceptions, defaults to false
  • flushOnClose - Flush any queued logs prior to closing/exiting
  • depth - max depth for objects dumped by NodeJS util.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 to 5
  • maximumAttempts - How many retries before disabling buffering, defaults to 25
  • connectionDelay - How long between backoff in milliseconds, defaults to 1000
  • maxDelayBetweenReconnection - The maximum backoff in milliseconds, defaults to 60000
  • maxBufferSize - The maximum size of the retry buffer, in bytes, defaults to 1048576

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

Package maintainer: Nishkal Kashyap

Original author: Ken Perkins