From 5e64fbd90b85485d79cac6db90266abc92da1370 Mon Sep 17 00:00:00 2001 From: Michael Demmer Date: Thu, 24 Mar 2016 14:56:28 -0700 Subject: [PATCH] add a stderr appender Thus functions almost identically to the consoleAppender except that instead of logging through `console.log` it uses `process.stderr.write`. --- lib/appenders/stderr.js | 21 +++++++++++++++++++++ test/stderrAppender-test.js | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 lib/appenders/stderr.js create mode 100644 test/stderrAppender-test.js diff --git a/lib/appenders/stderr.js b/lib/appenders/stderr.js new file mode 100644 index 0000000..fadda92 --- /dev/null +++ b/lib/appenders/stderr.js @@ -0,0 +1,21 @@ +"use strict"; + +var layouts = require('../layouts') + +function stderrAppender(layout, timezoneOffset) { + layout = layout || layouts.colouredLayout; + return function(loggingEvent) { + process.stderr.write(layout(loggingEvent, timezoneOffset) + '\n'); + }; +} + +function configure(config) { + var layout; + if (config.layout) { + layout = layouts.layout(config.layout.type, config.layout); + } + return stderrAppender(layout, config.timezoneOffset); +} + +exports.appender = stderrAppender; +exports.configure = configure; diff --git a/test/stderrAppender-test.js b/test/stderrAppender-test.js new file mode 100644 index 0000000..c4244d1 --- /dev/null +++ b/test/stderrAppender-test.js @@ -0,0 +1,35 @@ +"use strict"; +var assert = require('assert') +, vows = require('vows') +, layouts = require('../lib/layouts') +, sandbox = require('sandboxed-module'); + +vows.describe('../lib/appenders/stderr').addBatch({ + 'appender': { + topic: function() { + var messages = [] + , fakeProcess = { + stderr: { + write: function(msg) { messages.push(msg); } + } + } + , appenderModule = sandbox.require( + '../lib/appenders/stderr', + { + globals: { + 'process': fakeProcess + } + } + ) + , appender = appenderModule.appender(layouts.messagePassThroughLayout); + + appender({ data: ["blah"] }); + return messages; + }, + + 'should output to stderr': function(messages) { + assert.equal(messages[0], 'blah\n'); + } + } + +}).exportTo(module);