Skip to content
This repository was archived by the owner on Jul 28, 2020. It is now read-only.

support batch sending and logging & refactor tests #8

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
TESTS = $(shell find . -name "*.test.js")

test:
@mocha -u tdd --globals "encoding" -t 8000 $(TESTS) -R spec
@./node_modules/.bin/mocha -u tdd --globals "encoding" -t 8000 $(TESTS) -R spec


.PHONY: test
21 changes: 20 additions & 1 deletion lib/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ var Logger = exports.Logger = function (scribe, category) {
}

this.stackRegex = new RegExp("Error.+?\t.+?\t.+?\t +?at (.+?)\t");
this.lastLoggedLeve = null;
this.lastLoggedLevel = null;
this.lastLoggedLine = null;

this.scribe = scribe;
Expand Down Expand Up @@ -174,6 +174,25 @@ Logger.prototype.logMessage = function (level, msg) {

};

Logger.prototype.logMessages = function (level, msgs) {
var prefix = this.levelNames[level] + "\t" + this.hostname + "\t" + process.pid + "\t" + this.extractCalledFromStack() + "\t";

this.lastLoggedLevel = level;
this.lastLoggedLine = prefix + "\t" + msgs[msgs.length - 1];

var logs = [];
for (var i = 0, len = msgs.length; i < len; i++) {
if (this.scribe) {
logs.push(this.formatTimestamp(new Date()) + "\t" + prefix + "\t" + msgs[i]);
} else {
process.stdout.write(this.levelNames[level] + "\t" + process.pid + "\t" + this.extractCalledFromStack() + "\t" + msgs[i] + "\n");
}
}
if (logs.length > 0) {
this.scribe.send(this.scribeCategory, logs);
}
};

Logger.prototype.debug = Logger.prototype.log = function (msg) {
this.logMessage(Logger.LOG_DEBUG, format.apply(this, arguments));
};
Expand Down
18 changes: 11 additions & 7 deletions lib/scribe.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,14 +191,18 @@ Scribe.prototype.retryConnection = function() {
/**
* Send log entry to scribe server
@param {String} category Log category
@param {String} message Log message
@param {String|Array} message Log message
*/
Scribe.prototype.send = function(category, message) {
var entry = new scribe_types.LogEntry({
category : category,
message : message
});
Scribe.prototype.send = function(category, messages) {
if (messages.constructor !== Array) {
messages = [messages];
}
for (var i = 0, len = messages.length; i < len; i++) {
this.queue.push(new scribe_types.LogEntry({
category : category,
message : messages[i]
}));
}

this.queue.push(entry);
this.flush();
};
10 changes: 8 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@
"name": "scribe",
"description": "Scribe client",
"version": "0.0.10",
"scripts": {
"test": "make test"
},
"repository": {
"type": "git",
"url": "git://github.com/Applifier/node-scribe"
},
"dependencies": {
"thrift" : "0.7.0"
"thrift": "0.7.0"
},
"author": "Applifier <opensource@applifier.com>"
"author": "Applifier <opensource@applifier.com>",
"devDependencies": {
"mocha": "^2.4.5"
}
}
126 changes: 80 additions & 46 deletions test/logger.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,83 @@ var Scribe = require('../lib/scribe').Scribe;
var scribeServer = require('../test_utils/scribeserver');
var Logger = require('../lib/logger').Logger;

module.exports = {
'test construct': function() {
var scribe = new Scribe("localhost", 8988);
var logger = new Logger(scribe, "foo");
},
'test sending data' : function() {
var server = scribeServer.createServer();
server.on('log', function(entry) {
assert.equal(entry.length, 1, "Should have received one entry");
assert.equal(entry[0].category, "foo");
assert.ok(entry[0].message.indexOf("\tfoobar") > -1);
assert.ok(entry[0].message.indexOf("\tDEBUG") > -1);
setTimeout(function() {
scribe.close();
server.close();
}, 500);
});
server.listen(8992);
var scribe = new Scribe("localhost", 8992);
var logger = new Logger(scribe, "foo");
scribe.open(function(err, client) {
logger.log("foobar");
});
},
'test replacing console' : function() {
var server = scribeServer.createServer();
server.on('log', function(entry) {
assert.equal(entry.length, 1, "Should have received one entry");
assert.equal(entry[0].category, "foo");
assert.ok(entry[0].message.indexOf("\tfoobar") > -1);
assert.ok(entry[0].message.indexOf("\tDEBUG") > -1);
setTimeout(function() {
scribe.close();
server.close();
}, 500);
});
server.listen(8993);
var scribe = new Scribe("localhost", 8993);
var logger = new Logger(scribe, "foo");
logger.replaceConsole();
scribe.open(function(err, client) {
console.log("foobar");
logger.releaseConsole();
});
}
};
test('test construct', function(done) {
var scribe = new Scribe("localhost", 8988);
var logger = new Logger(scribe, "foo");
assert.ok(scribe);
assert.ok(logger);
done();
});

test('test sending data', function(done) {
var server = scribeServer.createServer();
server.on('log', function(entry) {
assert.equal(entry.length, 1, "Should have received one entry");
assert.equal(entry[0].category, "foo");
assert.ok(entry[0].message.indexOf("\tfoobar") > -1);
assert.ok(entry[0].message.indexOf("\tDEBUG") > -1);
setTimeout(function() {
scribe.close();
server.close();
done();
}, 500);
});
server.listen(8992);
var scribe = new Scribe("localhost", 8992);
var logger = new Logger(scribe, "foo");
scribe.open(function(err, client) {
logger.log("foobar");
});
});

test('test batch sending data', function(done) {
var server = scribeServer.createServer();
server.on('log', function(entry) {
assert.equal(entry.length, 6, "Should have received six entries");
assert.equal(entry[0].category, "foo");
assert.ok(entry[0].message.indexOf("\tfoobar") > -1);
assert.ok(entry[0].message.indexOf("\tDEBUG") > -1);
setTimeout(function() {
scribe.close();
server.close();
done();
}, 500);
});
server.listen(8992);
var scribe = new Scribe("localhost", 8992);
var logger = new Logger(scribe, "foo");
scribe.open(function(err, client) {
logger.logMessages(Logger.LOG_DEBUG, [
"foobar1",
"foobar2",
"foobar3",
"foobar4",
"foobar5",
"foobar6"
]);
});
});

test('test replacing console', function(done) {
var server = scribeServer.createServer();
server.on('log', function(entry) {
process.stdout.write('@log' + JSON.stringify(entry) + '\n');
assert.equal(entry.length, 1, "Should have received one entry");
assert.equal(entry[0].category, "foo");
assert.ok(entry[0].message.indexOf("\tfoobar") > -1);
assert.ok(entry[0].message.indexOf("\tDEBUG") > -1);
setTimeout(function() {
scribe.close();
server.close();
done();
}, 500);
});
server.listen(8993);
var scribe = new Scribe("localhost", 8993);
var logger = new Logger(scribe, "foo");
logger.replaceConsole();
scribe.open(function(err, client) {
console.log("foobar");
logger.releaseConsole();
});
});
29 changes: 4 additions & 25 deletions test/requestlog.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,26 @@ var RequestLog = require('../lib/requestlog');
var assert = require('assert');

test("constructor", function(done) {

assert.ok(RequestLog);

done();
});


test("creates request id", function(done) {

var req = {};
var res = {};

var middleware = RequestLog.factory();

assert.ok(middleware != null);

done();
});


test("can log something", function(done) {

var req = {};
var res = {};
var buf = "";

RequestLog.factory(function (level, id, line, msg) {
buf += msg;
})(req, res, function() {});


})(req, res, function() {});

req.log.log("test");

Expand All @@ -42,7 +31,6 @@ test("can log something", function(done) {
});

test("can figure out caller line", function(done) {

var req = {};
var res = {};
var buf = "";
Expand All @@ -53,24 +41,21 @@ test("can figure out caller line", function(done) {
buf += msg;
})(req, res, function() {});


req.log.log("test");

assert.equal(buf, "test");
assert.equal(line, "Test.fn (/Users/juhomakinen/Development/node-scribe/test/requestlog.test.js:57:11)");
assert(line.indexOf("test/requestlog.test.js:44:11") > -1);

done();
});

test("can pass level correctly", function(done) {

var req = {};
var res = {};
var levels = [];


RequestLog.factory(function (level, id, _line, msg) {
levels.push(level);
levels.push(level);
})(req, res, function() {});

req.log.log("test");
Expand All @@ -79,7 +64,6 @@ test("can pass level correctly", function(done) {
req.log.error("test");
req.log.critical("test");


assert.equal(levels[0], 7);
assert.equal(levels[1], 6);
assert.equal(levels[2], 4);
Expand All @@ -90,20 +74,15 @@ test("can pass level correctly", function(done) {
});

test("can has unique id", function(done) {

var req = {};
var res = {};
var levels = [];


RequestLog.factory(function (level, id, _line, msg) {
levels.push(level);
levels.push(level);
})(req, res, function() {});



assert.ok(req.log.id);

done();
});

Loading