12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- const flatted = require('flatted');
- const levels = require('./levels');
- class LoggingEvent {
-
- constructor(categoryName, level, data, context, location) {
- this.startTime = new Date();
- this.categoryName = categoryName;
- this.data = data;
- this.level = level;
- this.context = Object.assign({}, context);
- this.pid = process.pid;
- if (location) {
- this.functionName = location.functionName;
- this.fileName = location.fileName;
- this.lineNumber = location.lineNumber;
- this.columnNumber = location.columnNumber;
- this.callStack = location.callStack;
- }
- }
- serialise() {
- return flatted.stringify(this, (key, value) => {
-
-
-
- if (value && value.message && value.stack) {
-
- value = Object.assign({message: value.message, stack: value.stack}, value);
- }
-
-
- else if (typeof value === 'number' && (Number.isNaN(value) || !Number.isFinite(value))) {
- value = value.toString();
- }
-
-
- else if (typeof value === 'undefined') {
- value = typeof value;
- }
- return value;
- });
- }
- static deserialise(serialised) {
- let event;
- try {
- const rehydratedEvent = flatted.parse(serialised, (key, value) => {
- if (value && value.message && value.stack) {
- const fakeError = new Error(value);
- Object.keys(value).forEach((k) => { fakeError[k] = value[k]; });
- value = fakeError;
- }
- return value;
- });
- rehydratedEvent.location = {
- functionName: rehydratedEvent.functionName,
- fileName: rehydratedEvent.fileName,
- lineNumber: rehydratedEvent.lineNumber,
- columnNumber: rehydratedEvent.columnNumber,
- callStack: rehydratedEvent.callStack
- };
- event = new LoggingEvent(
- rehydratedEvent.categoryName,
- levels.getLevel(rehydratedEvent.level.levelStr),
- rehydratedEvent.data,
- rehydratedEvent.context,
- rehydratedEvent.location
- );
- event.startTime = new Date(rehydratedEvent.startTime);
- event.pid = rehydratedEvent.pid;
- event.cluster = rehydratedEvent.cluster;
- } catch (e) {
- event = new LoggingEvent(
- 'log4js',
- levels.ERROR,
- ['Unable to parse log:', serialised, 'because: ', e]
- );
- }
- return event;
- }
- }
- module.exports = LoggingEvent;
|