node package manager

winston-syslog-posix

winston-syslog-posix Circle CI

NPM

A winston syslog transport based on the posix module for node.js.

Background

In what naively seemed like a trvial task, I set out to have node log to syslog which our sysadmins have shipping to logstash. While I was able to integrate winston-syslog with relative ease, by the time the messages made it to logstash, the fields were not mapped correctly. After burning nearly an entire day trying to fix that problem, I retreated to the safety of a C library, but I could not find a working posix transport! Argh! YMMV

Inspired by tmont's blog posting, this module provides a fully functional winston syslog transport that has been tested on Linux 3.2.x kernel.

Installation

  $ npm install winston
  $ npm install winston-syslog-posix

Usage

To use the SyslogPosix transport in winston, you simply need to require it and then either add it to an existing winston logger or pass an instance to a new winston logger:

  var winston = require('winston');
 
  // 
  // Requiring `winston-syslog-posix` will expose 
  // `winston.transports.SyslogPosix` 
  // 
  require('winston-syslog-posix').SyslogPosix;
 
  winston.add(winston.transports.SyslogPosix, options);

The following options are availble to configure SyslogPosix:

  • level: Allows you to set a level that specifies the level of messages for this transport (Default info).
  • identity: The identity of the application (Default: process.title).
  • facility: Syslog facility to use (Default: local0).
  • unmapped: Unmatched levels will be mapped to this syslog level (Default: info).
  • showPid: Display the PID of the process that log messages are coming from (Default true).
  • showLvl: Display the level of the log messages (Default true).

Log Levels

Because syslog only allows a subset of the levels available in winston, levels that do not match will be mapped via options.unmapped. Winston levels are mapped by name, and therefore it is not required that you use winston.config.syslog.levels; i.e. this is much more forgiving than what winston-syslog suggests.

Note: if you do choose to use winston.config.syslog.levels, then you will likely need a patch to winston to invert the log level comparisons; i.e. like: 0be4007.