From defbf5ca4b8d216db0e24ec11ae42b5292d80778 Mon Sep 17 00:00:00 2001 From: xsellier Date: Wed, 25 Jun 2014 11:36:25 -0400 Subject: [PATCH] Refactor winston-posix-syslog in order to be consistent with other winston plugin Update README.md to describes new way to use winston-posix-syslog Increment version in package.json Disable color and json format Add winston default options --- README.md | 8 +-- lib/winston-posix-syslog.js | 93 +++++++++++++++++-------------- package.json | 33 +++++++---- test/winston-posix-syslog-test.js | 14 ++--- 4 files changed, 86 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 03863bb..65318db 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ A Syslog transport for [winston][0] using posix. ### Installing winston-syslog ``` bash - $ npm install winston - $ npm install winston-posix-syslog + $ npm install winston --save + $ npm install winston-posix-syslog --save ``` ## Motivation @@ -20,9 +20,9 @@ To use the PosixSyslog transport in [winston][0], you simply need to require it ``` js var winston = require('winston'); - var PosixSyslog = require('winston-posix-syslog').PosixSyslog; + require('winston-posix-syslog'); - winston.add(PosixSyslog, options); + winston.add(winston.transports.PosixSyslog, options); winston.log('info', 'I AM the one who knocks.'); ``` diff --git a/lib/winston-posix-syslog.js b/lib/winston-posix-syslog.js index d5a0ea3..51fbbf6 100644 --- a/lib/winston-posix-syslog.js +++ b/lib/winston-posix-syslog.js @@ -1,64 +1,66 @@ -var util = require('util') +var util = require('util') , winston = require('winston') - , posix = require('posix') - ; + , posix = require('posix') + , common = require('winston/lib/winston/common'); var syslogLevels = { - debug: 'debug', - info: 'info', - notice: 'notice', - warn: 'warning', - error: 'err', - crit: 'crit', - alert: 'alert' + debug : 'debug', + info : 'info', + notice : 'notice', + warn : 'warning', + error : 'err', + crit : 'crit', + alert : 'alert' }; -var getMasks = function() { - var masks = {}; +var PosixSyslog = exports.PosixSyslog = function (options) { + winston.Transport.call(this, options); - for (var level in syslogLevels) { - var mask = syslogLevels[level]; - masks[mask] = true; - } + options = options || {}; - return masks; -} - -var PosixSyslog = winston.transports.PosixSyslog = function (options) { - options = options || {}; - - this.identity = options.identity || process.title; - this.facility = options.facility || 'local0'; + this.timestamp = typeof options.timestamp !== 'undefined' ? options.timestamp : false; + this.prettyPrint = options.prettyPrint || false; + this.label = options.label || null; + this.identity = options.identity || process.title; + this.facility = options.facility || 'local0'; this.openLogOptions = { - cons: options.cons || true, - ndelay: options.ndelay || true, - pid: options.pid || true, - nowait: options.nowait || true, - odelay: options.odelay || false + cons : options.cons || true, + ndelay : options.ndelay || true, + pid : options.pid || true, + nowait : options.nowait || true, + odelay : options.odelay || false } }; -var buildMessage = function(msg, meta) { - if (meta) { - return util.format("%s: %s", msg, JSON.stringify(meta)); - } - - return msg; -}; - util.inherits(PosixSyslog, winston.Transport); +winston.transports.PosixSyslog = PosixSyslog; + PosixSyslog.prototype.name = 'posixSyslog'; PosixSyslog.prototype.log = function (level, msg, meta, callback) { - var self = this; + var self = this + , output = common.log({ + message : msg, + meta : meta, + colorize : false, + json : false, + level : level, + message : msg, + meta : meta, + stringify : this.stringify, + timestamp : this.timestamp, + prettyPrint : this.prettyPrint, + raw : this.raw, + label : this.label + }); // We ignore any incompatible levels if (level in syslogLevels) { posix.openlog(self.identity, self.openLogOptions, self.facility); - posix.setlogmask(getMasks()); - posix.syslog(syslogLevels[level], buildMessage(msg, meta)); + posix.setlogmask(self.getMasks()); + posix.syslog(syslogLevels[level], output); posix.closelog(); self.emit('logged'); } @@ -66,4 +68,13 @@ PosixSyslog.prototype.log = function (level, msg, meta, callback) { callback(null, true); }; -exports.PosixSyslog = PosixSyslog; \ No newline at end of file +PosixSyslog.prototype.getMasks = function() { + var masks = {}; + + for (var level in syslogLevels) { + var mask = syslogLevels[level]; + masks[mask] = true; + } + + return masks; +}; \ No newline at end of file diff --git a/package.json b/package.json index 05404d8..45dfa9f 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,8 @@ { "name": "winston-posix-syslog", - "description": "A syslog transport for winston that uses posix", - "version": "0.0.7", - "author": { - "name": "Anton Nguyen", - "email": "anton@freshbooks.com" - }, + "description": "An awesome syslog transport for winston that uses posix", + "version": "0.0.8", + "author": "Anton Nguyen ", "preferGlobal": false, "dependencies": { "util": "0.4.x", @@ -15,12 +12,28 @@ "devDependencies": { "vows": "0.7.x" }, - "repository" : { - "type": "git", - "url": "https://github.com/AntonNguyen/winston-posix-syslog.git" + "repository": { + "type": "git", + "url": "https://github.com/AntonNguyen/winston-posix-syslog.git" }, "main": "./lib/winston-posix-syslog", "engines": { "node": ">= 0.4.0" - } + }, + "bugs": { + "url": "https://github.com/AntonNguyen/winston-posix-syslog/issues" + }, + "homepage": "https://github.com/AntonNguyen/winston-posix-syslog", + "directories": { + "test": "test" + }, + "scripts": { + "test": "vows test/*.js" + }, + "keywords": [ + "winston", + "syslog", + "posix" + ], + "license": "ISC" } diff --git a/test/winston-posix-syslog-test.js b/test/winston-posix-syslog-test.js index 1357cfa..ac52baf 100644 --- a/test/winston-posix-syslog-test.js +++ b/test/winston-posix-syslog-test.js @@ -1,10 +1,10 @@ -var path = require('path') - , vows = require('vows') - , assert = require('assert') - , winston = require('winston') - , helpers = require('winston/test/helpers') - , PosixSyslog = require('../lib/winston-posix-syslog').PosixSyslog - , npmTransport = new (PosixSyslog)() +var path = require('path') + , vows = require('vows') + , assert = require('assert') + , winston = require('winston') + , helpers = require('winston/test/helpers') + , PosixSyslog = require('../lib/winston-posix-syslog').PosixSyslog + , npmTransport = new (PosixSyslog)() , posixSyslogTransport = new (PosixSyslog)({ levels: winston.config.syslog.levels }) ;