Comparing version 0.2.0 to 0.3.0
@@ -21,5 +21,8 @@ /* | ||
module.exports.createLogger = function(loggerConfig) { | ||
if (!loggerConfig) { | ||
throw Error('config instance must be specified'); | ||
} | ||
var config = parseConfig(loggerConfig); | ||
configureStreams(config); | ||
configureSerializers(config); | ||
config.streams = createStreams(config); | ||
config.serializers = createSerializers(config); | ||
return bunyan.createLogger(config); | ||
@@ -32,37 +35,47 @@ } | ||
function configureStreams(config) { | ||
if (config.streams) { | ||
var len = config.streams.length; | ||
for (var i = 0; i < len; i++) { | ||
var stream = config.streams[i]; | ||
switch (stream.type) { | ||
case 'raw': | ||
stream.stream = new bunyan.RingBuffer({ | ||
limit: config.ringBufferLimit || 200 | ||
}); | ||
break; | ||
case 'stream': | ||
switch (stream.stream) { | ||
case 'process.stdout': | ||
stream.stream = process.stdout; | ||
break; | ||
case 'process.stderr': | ||
stream.stream = process.stderr; | ||
break; | ||
default: | ||
stream.stream = eval(stream.stream); | ||
} | ||
break; | ||
case 'file': | ||
stream.stream = stream.file; | ||
break; | ||
} | ||
function createStreams(config) { | ||
if (!config.streams) { | ||
return null; | ||
} | ||
var streams = config.streams.map(function(stream) { | ||
switch (stream.type) { | ||
case 'raw': | ||
stream.stream = new bunyan.RingBuffer({ | ||
limit: config.ringBufferLimit || 200 | ||
}); | ||
break; | ||
case 'stream': | ||
switch (stream.stream) { | ||
case 'process.stdout': | ||
stream.stream = process.stdout; | ||
break; | ||
case 'process.stderr': | ||
stream.stream = process.stderr; | ||
break; | ||
default: | ||
stream.stream = eval(stream.stream); | ||
} | ||
break; | ||
case 'file': | ||
stream.stream = stream.file; | ||
break; | ||
} | ||
} | ||
return stream; | ||
}); | ||
return streams; | ||
} | ||
function configureSerializers(config) { | ||
config.serializers = { | ||
req: requestSerializer | ||
}; | ||
function createSerializers(config) { | ||
var serializers = {}; | ||
serializers.req = requestSerializer; | ||
serializers.res = bunyan.stdSerializers.res; | ||
if (config.hasOwnProperty('serializers')) { | ||
if (config.serializers.req) { | ||
serializers.req = config.serializers.req; | ||
} | ||
if (config.serializers.res) { | ||
serializers.res = config.serializers.res; | ||
} | ||
} | ||
return serializers; | ||
} | ||
@@ -69,0 +82,0 @@ |
{ | ||
"name": "fh-logger", | ||
"description": "Enables a simple way of configuring and creating loggers, configured with request serializers, including clustering information.", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"repository": { | ||
@@ -19,2 +19,3 @@ "type": "git", | ||
"devDependencies": { | ||
"chai": "^3.3.0", | ||
"grunt": "^0.4.5", | ||
@@ -24,7 +25,8 @@ "grunt-fh-build": "^0.3.1", | ||
"mocha": "2.3.1", | ||
"istanbul": "^0.3.17", | ||
"grunt-mocha": "^0.4.13", | ||
"grunt-mocha-istanbul": "^3.0.1", | ||
"grunt-mocha-test": "^0.12.7", | ||
"grunt-mocha-istanbul": "^3.0.1" | ||
"istanbul": "^0.3.17", | ||
"rewire": "^2.3.4" | ||
} | ||
} |
@@ -17,3 +17,4 @@ /* | ||
*/ | ||
var fh_logger = require('../lib/fh_logger.js'); | ||
var rewire = require('rewire'); | ||
var fh_logger = rewire('../lib/fh_logger.js'); | ||
var expect = require('chai').expect | ||
@@ -23,4 +24,19 @@ var bunyan = require('bunyan'); | ||
describe('fh_logger.createLogger', function() { | ||
describe('fh_logger', function() { | ||
describe('createLogger', function() { | ||
describe('with null config', function() { | ||
it('should throw error if config is undefined', function() { | ||
var createLogger = fh_logger.createLogger; | ||
expect(createLogger.bind(createLogger, undefined)).to | ||
.throw('config instance must be specified'); | ||
}); | ||
it('should throw error if config is null', function() { | ||
var createLogger = fh_logger.createLogger; | ||
expect(createLogger.bind(createLogger, null)).to | ||
.throw('config instance must be specified'); | ||
}); | ||
}); | ||
describe('with Bunyan defaults', function() { | ||
@@ -30,3 +46,3 @@ var logger; | ||
logger = fh_logger.createLogger({name: 'simple'}); | ||
}) | ||
}); | ||
it('name should have been set to simple', function() { | ||
@@ -57,3 +73,3 @@ expect(logger.fields.name).to.equal('simple'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to file_logger', function() { | ||
@@ -84,3 +100,3 @@ expect(logger.fields.name).to.equal('file_logger'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to file_logger_string', function() { | ||
@@ -118,3 +134,3 @@ expect(logger.fields.name).to.equal('file_logger_string'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to from_string_stdout', function() { | ||
@@ -144,3 +160,3 @@ expect(logger.fields.name).to.equal('from_string_stdout'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to from_string_raw', function() { | ||
@@ -173,3 +189,3 @@ expect(logger.fields.name).to.equal('from_string_raw'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to test_stderr', function() { | ||
@@ -197,3 +213,3 @@ expect(logger.fields.name).to.equal('test_stderr'); | ||
logger = fh_logger.createLogger(config); | ||
}) | ||
}); | ||
it('name should have been set to test_stderr', function() { | ||
@@ -241,4 +257,103 @@ expect(logger.fields.name).to.equal('testing'); | ||
}); | ||
}); | ||
describe('createStreams', function() { | ||
var createStreams; | ||
before(function(){ | ||
createStreams = fh_logger.__get__("createStreams"); | ||
}); | ||
it('no configured streams should be alright, Will default to Bunyan defaults', function() { | ||
var streams = createStreams({name: 'testing'}); | ||
expect(streams).to.be.null; | ||
}); | ||
it('raw type should produce a RingBuffer', function() { | ||
var streams = createStreams({name: 'testing', streams: [{type: 'raw'}]}); | ||
expect(streams.length).to.equal(1); | ||
expect(streams[0].type).to.equal('raw'); | ||
expect(streams[0].records).is.defined; | ||
}); | ||
it("stream type with stream 'process.stdout'", function() { | ||
var streams = createStreams({name: 'testing', streams: [{type: 'stream', stream: 'process.stdout'}]}); | ||
expect(streams.length).to.equal(1); | ||
expect(streams[0].type).to.equal('stream'); | ||
expect(streams[0].stream).to.equal(process.stdout); | ||
}); | ||
it("stream type with stream 'process.stderr'", function() { | ||
var streams = createStreams({name: 'testing', streams: [{type: 'stream', stream: 'process.stderr'}]}); | ||
expect(streams.length).to.equal(1); | ||
expect(streams[0].type).to.equal('stream'); | ||
expect(streams[0].stream).to.equal(process.stderr); | ||
}); | ||
it("stream type with stream 'gibberish'", function() { | ||
var config = {name: 'testing', streams: [{type: 'stream', stream: 'gibberish'}]}; | ||
expect(createStreams.bind(createStreams, config)).to | ||
.throw('gibberish is not defined'); | ||
}); | ||
}); | ||
describe('default requestSerializer', function() { | ||
var requestSerializer; | ||
before(function(){ | ||
requestSerializer = fh_logger.__get__("requestSerializer"); | ||
}); | ||
it("should have reqId property included in logging requests", function() { | ||
expect(requestSerializer.reqId).to.be.defined; | ||
}); | ||
it("should have method property included in logging requests", function() { | ||
expect(requestSerializer.method).to.be.defined; | ||
}); | ||
it("should have url property included in logging requests", function() { | ||
expect(requestSerializer.url).to.be.defined; | ||
}); | ||
it("should have worker property included in logging requests.", function() { | ||
expect(requestSerializer.worker).to.be.defined; | ||
}); | ||
}); | ||
describe('createSerializers', function() { | ||
var createSerializers; | ||
before(function(){ | ||
createSerializers = fh_logger.__get__("createSerializers"); | ||
}); | ||
it("with no configured serializers should return default request serializer", function() { | ||
expect(createSerializers({}).req).to.be.defined; | ||
}); | ||
it("with no configured serializers should return default bunyan response serializer", function() { | ||
expect(createSerializers({}).res).to.be.defined; | ||
expect(createSerializers({}).res.statusCode).to.be.defined; | ||
}); | ||
it("with configured request serrializer", function() { | ||
var config = { serializers : { | ||
req : function(r) { return { dummy: 'testing'}; } | ||
} | ||
}; | ||
var serializers = createSerializers(config); | ||
expect(serializers.req).to.be.defined; | ||
expect(serializers.req({}).dummy).to.be.defined; | ||
}); | ||
it("with configured response serrializer", function() { | ||
var config = { serializers : { | ||
res : function(r) { return { dummy: 'testing'}; } | ||
} | ||
}; | ||
var serializers = createSerializers(config); | ||
expect(serializers.res).to.be.defined; | ||
expect(serializers.res({}).dummy).to.be.defined; | ||
}); | ||
}); | ||
describe('parseConfig', function() { | ||
var parseConfig; | ||
before(function(){ | ||
parseConfig = fh_logger.__get__("parseConfig"); | ||
}); | ||
it("string config should be parsed to JSON", function() { | ||
var config = parseConfig('{"name": "testing"}'); | ||
expect(config.name).to.be.equal('testing'); | ||
}); | ||
}); | ||
}); | ||
var deleteFile = function(file) { | ||
@@ -245,0 +360,0 @@ fs.exists(file, function(exists) { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
37398
608
9