mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
fix(test): added coverage of serialisation
This commit is contained in:
parent
ae9e102f15
commit
09a72eb17a
@ -30,11 +30,10 @@ class LoggingEvent {
|
||||
}
|
||||
|
||||
serialise() {
|
||||
// JSON.stringify(new Error('test')) returns {}, which is not really useful for us.
|
||||
// The following allows us to serialize errors correctly.
|
||||
// Validate that we really are in this case
|
||||
try {
|
||||
const logData = this.data.map((e) => {
|
||||
// JSON.stringify(new Error('test')) returns {}, which is not really useful for us.
|
||||
// The following allows us to serialize errors correctly.
|
||||
if (e && e.stack && CircularJSON.stringify(e) === '{}') {
|
||||
e = { message: e.message, stack: e.stack };
|
||||
}
|
||||
@ -54,10 +53,8 @@ class LoggingEvent {
|
||||
static deserialise(serialised) {
|
||||
let event;
|
||||
try {
|
||||
event = CircularJSON.parse(serialised);
|
||||
event.startTime = new Date(event.startTime);
|
||||
event.level = levels.getLevel(event.level.levelStr);
|
||||
event.data = event.data.map((e) => {
|
||||
const rehydratedEvent = CircularJSON.parse(serialised);
|
||||
rehydratedEvent.data = rehydratedEvent.data.map((e) => {
|
||||
if (e && e.stack) {
|
||||
const fakeError = new Error(e.message);
|
||||
fakeError.stack = e.stack;
|
||||
@ -65,6 +62,15 @@ class LoggingEvent {
|
||||
}
|
||||
return e;
|
||||
});
|
||||
event = new LoggingEvent(
|
||||
rehydratedEvent.categoryName,
|
||||
levels.getLevel(rehydratedEvent.level.levelStr),
|
||||
rehydratedEvent.data,
|
||||
rehydratedEvent.context
|
||||
);
|
||||
event.startTime = new Date(rehydratedEvent.startTime);
|
||||
event.pid = rehydratedEvent.pid;
|
||||
event.cluster = rehydratedEvent.cluster;
|
||||
} catch (e) {
|
||||
event = new LoggingEvent(
|
||||
'log4js',
|
||||
|
||||
42
test/tap/LoggingEvent-test.js
Normal file
42
test/tap/LoggingEvent-test.js
Normal file
@ -0,0 +1,42 @@
|
||||
const test = require('tap').test;
|
||||
const LoggingEvent = require('../../lib/LoggingEvent');
|
||||
const levels = require('../../lib/levels');
|
||||
|
||||
test('LoggingEvent', (batch) => {
|
||||
batch.test('should serialise to JSON', (t) => {
|
||||
const event = new LoggingEvent('cheese', levels.DEBUG, ['log message'], { user: 'bob' });
|
||||
// set the event date to a known value
|
||||
event.startTime = new Date(Date.UTC(2018, 1, 4, 18, 30, 23, 10));
|
||||
const rehydratedEvent = JSON.parse(event.serialise());
|
||||
t.equal(rehydratedEvent.startTime, '2018-02-04T18:30:23.010Z');
|
||||
t.equal(rehydratedEvent.categoryName, 'cheese');
|
||||
t.equal(rehydratedEvent.level.levelStr, 'DEBUG');
|
||||
t.equal(rehydratedEvent.data.length, 1);
|
||||
t.equal(rehydratedEvent.data[0], 'log message');
|
||||
t.equal(rehydratedEvent.context.user, 'bob');
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.test('should deserialise from JSON', (t) => {
|
||||
const dehydratedEvent = `{
|
||||
"startTime": "2018-02-04T10:25:23.010Z",
|
||||
"categoryName": "biscuits",
|
||||
"level": {
|
||||
"levelStr": "INFO"
|
||||
},
|
||||
"data": [ "some log message", { "x": 1 } ],
|
||||
"context": { "thing": "otherThing" }
|
||||
}`;
|
||||
const event = LoggingEvent.deserialise(dehydratedEvent);
|
||||
t.type(event, LoggingEvent);
|
||||
t.same(event.startTime, new Date(Date.UTC(2018, 1, 4, 10, 25, 23, 10)));
|
||||
t.equal(event.categoryName, 'biscuits');
|
||||
t.same(event.level, levels.INFO);
|
||||
t.equal(event.data[0], 'some log message');
|
||||
t.equal(event.data[1].x, 1);
|
||||
t.equal(event.context.thing, 'otherThing');
|
||||
t.end();
|
||||
});
|
||||
|
||||
batch.end();
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user