A winston syslog transport based on the posix module for node.js.
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.
$ npm install winston
$ npm install winston-syslog-posix
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
).
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 towinston
to invert the log level comparisons; i.e. like: 0be4007.