mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
Merge pull request #305 from pmalouin/patch-1
clustered appender - Unwrap the serialized errors
This commit is contained in:
commit
b37c171e5c
@ -37,7 +37,14 @@ function deserializeLoggingEvent(loggingEventString) {
|
||||
loggingEvent = JSON.parse(loggingEventString);
|
||||
loggingEvent.startTime = new Date(loggingEvent.startTime);
|
||||
loggingEvent.level = log4js.levels.toLevel(loggingEvent.level.levelStr);
|
||||
|
||||
// Unwrap serialized errors
|
||||
for (var i = 0; i < loggingEvent.data.length; i++) {
|
||||
var item = loggingEvent.data[i];
|
||||
if (item && item.stack) {
|
||||
loggingEvent.data[i] = item.stack;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
|
||||
// JSON.parse failed, just log the contents probably a naughty.
|
||||
|
||||
@ -12,18 +12,30 @@ vows.describe('log4js cluster appender').addBatch({
|
||||
|
||||
var registeredClusterEvents = [];
|
||||
var loggingEvents = [];
|
||||
var onChildProcessForked;
|
||||
var onMasterReceiveChildMessage;
|
||||
|
||||
// Fake cluster module, so no cluster listeners be really added
|
||||
// Fake cluster module, so no real cluster listeners be really added
|
||||
var fakeCluster = {
|
||||
|
||||
on: function(event, callback) {
|
||||
registeredClusterEvents.push(event);
|
||||
onChildProcessForked = callback;
|
||||
},
|
||||
|
||||
isMaster: true,
|
||||
isWorker: false,
|
||||
|
||||
};
|
||||
var fakeWorker = {
|
||||
on: function(event, callback) {
|
||||
onMasterReceiveChildMessage = callback;
|
||||
},
|
||||
process: {
|
||||
pid: 123
|
||||
},
|
||||
id: 'workerid'
|
||||
};
|
||||
|
||||
var fakeActualAppender = function(loggingEvent) {
|
||||
loggingEvents.push(loggingEvent);
|
||||
@ -38,12 +50,21 @@ vows.describe('log4js cluster appender').addBatch({
|
||||
|
||||
var masterAppender = appenderModule.appender({
|
||||
actualAppenders: [fakeActualAppender, fakeActualAppender, fakeActualAppender],
|
||||
appenders: [{}, {category: "test"}, {category: "wovs"}]
|
||||
appenders: [{}, {category: "test"}, {category: "wovs"}]
|
||||
});
|
||||
|
||||
// Actual test - log message using masterAppender
|
||||
masterAppender(new LoggingEvent('wovs', 'Info', ['masterAppender test']));
|
||||
|
||||
|
||||
// Simulate a 'fork' event to register the master's message handler on our fake worker.
|
||||
onChildProcessForked(fakeWorker);
|
||||
// Simulate a cluster message received by the masterAppender.
|
||||
var simulatedLoggingEvent = new LoggingEvent('wovs', 'Error', ['message deserialization test', {stack: 'my wrapped stack'}]);
|
||||
onMasterReceiveChildMessage({
|
||||
type : '::log-message',
|
||||
event : JSON.stringify(simulatedLoggingEvent)
|
||||
});
|
||||
|
||||
var returnValue = {
|
||||
registeredClusterEvents: registeredClusterEvents,
|
||||
loggingEvents: loggingEvents,
|
||||
@ -57,9 +78,13 @@ vows.describe('log4js cluster appender').addBatch({
|
||||
},
|
||||
|
||||
"should log using actual appender": function(topic) {
|
||||
assert.equal(topic.loggingEvents.length, 2)
|
||||
assert.equal(topic.loggingEvents.length, 4);
|
||||
assert.equal(topic.loggingEvents[0].data[0], 'masterAppender test');
|
||||
assert.equal(topic.loggingEvents[1].data[0], 'masterAppender test');
|
||||
assert.equal(topic.loggingEvents[1].data[0], 'masterAppender test');
|
||||
assert.equal(topic.loggingEvents[2].data[0], 'message deserialization test');
|
||||
assert.equal(topic.loggingEvents[2].data[1], 'my wrapped stack');
|
||||
assert.equal(topic.loggingEvents[3].data[0], 'message deserialization test');
|
||||
assert.equal(topic.loggingEvents[3].data[1], 'my wrapped stack');
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user