mirror of
https://github.com/log4js-node/log4js-node.git
synced 2026-02-01 15:59:19 +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 = JSON.parse(loggingEventString);
|
||||||
loggingEvent.startTime = new Date(loggingEvent.startTime);
|
loggingEvent.startTime = new Date(loggingEvent.startTime);
|
||||||
loggingEvent.level = log4js.levels.toLevel(loggingEvent.level.levelStr);
|
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) {
|
} catch (e) {
|
||||||
|
|
||||||
// JSON.parse failed, just log the contents probably a naughty.
|
// JSON.parse failed, just log the contents probably a naughty.
|
||||||
|
|||||||
@ -12,18 +12,30 @@ vows.describe('log4js cluster appender').addBatch({
|
|||||||
|
|
||||||
var registeredClusterEvents = [];
|
var registeredClusterEvents = [];
|
||||||
var loggingEvents = [];
|
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 = {
|
var fakeCluster = {
|
||||||
|
|
||||||
on: function(event, callback) {
|
on: function(event, callback) {
|
||||||
registeredClusterEvents.push(event);
|
registeredClusterEvents.push(event);
|
||||||
|
onChildProcessForked = callback;
|
||||||
},
|
},
|
||||||
|
|
||||||
isMaster: true,
|
isMaster: true,
|
||||||
isWorker: false,
|
isWorker: false,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
var fakeWorker = {
|
||||||
|
on: function(event, callback) {
|
||||||
|
onMasterReceiveChildMessage = callback;
|
||||||
|
},
|
||||||
|
process: {
|
||||||
|
pid: 123
|
||||||
|
},
|
||||||
|
id: 'workerid'
|
||||||
|
};
|
||||||
|
|
||||||
var fakeActualAppender = function(loggingEvent) {
|
var fakeActualAppender = function(loggingEvent) {
|
||||||
loggingEvents.push(loggingEvent);
|
loggingEvents.push(loggingEvent);
|
||||||
@ -38,12 +50,21 @@ vows.describe('log4js cluster appender').addBatch({
|
|||||||
|
|
||||||
var masterAppender = appenderModule.appender({
|
var masterAppender = appenderModule.appender({
|
||||||
actualAppenders: [fakeActualAppender, fakeActualAppender, fakeActualAppender],
|
actualAppenders: [fakeActualAppender, fakeActualAppender, fakeActualAppender],
|
||||||
appenders: [{}, {category: "test"}, {category: "wovs"}]
|
appenders: [{}, {category: "test"}, {category: "wovs"}]
|
||||||
});
|
});
|
||||||
|
|
||||||
// Actual test - log message using masterAppender
|
// Actual test - log message using masterAppender
|
||||||
masterAppender(new LoggingEvent('wovs', 'Info', ['masterAppender test']));
|
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 = {
|
var returnValue = {
|
||||||
registeredClusterEvents: registeredClusterEvents,
|
registeredClusterEvents: registeredClusterEvents,
|
||||||
loggingEvents: loggingEvents,
|
loggingEvents: loggingEvents,
|
||||||
@ -57,9 +78,13 @@ vows.describe('log4js cluster appender').addBatch({
|
|||||||
},
|
},
|
||||||
|
|
||||||
"should log using actual appender": function(topic) {
|
"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[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