Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fh-logger

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fh-logger - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

81

lib/fh_logger.js

@@ -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) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc