Базовый лог с уровнем и датой
const { ConsoleOutput } = require("./ConsoleOutput.js");
const { BaseLog } = require("./BaseLog.js");
const jsObj = {
'level': 'info',
'message':'log',
'payload': {
'a':1,
'b':[2, 3, 4],
'c': {
5: true
}
}
}
const baseLog = BaseLog.newFromJsObj(jsObj);
const output = new ConsoleOutput;
output.add( baseLog.level(), baseLog.asJsObj() )
В текстовой форме
const { TextLog } = require("./TextLog.js");
ConsoleOutput.newWith(
TextLog.newFromLog(
baseLog
)
);
const { AnsiColoredLog } = require("./AnsiColoredLog.js");
ConsoleOutput.newWith(
AnsiColoredLog.newFromLog(
TextLog.newFromLog(
baseLog
)
)
);
В виде json строки
const { JsonLog } = require("./JsonLog.js");
ConsoleOutput.newWith(
JsonLog.newFromLog(
baseLog
)
);
С добавлением Google Stackdriver параметра severity
const { GoogleLog } = require("./GoogleLog.js");
ConsoleOutput.newWith(
GoogleLog.newFromLog(
JsonLog.newFromLog(
baseLog
)
)
);
Возможна любая комбинация декораторов благодаря единому интерфейсу
output.addAsString(
AnsiColoredLog.newFromLog(
JsonLog.newFromLog(
baseLog
)
)
);
output.addAsString(
TextLog.newFromLog(
GoogleLog.newFromLog(
baseLog
)
)
);
Автоматический подбор композиции декорированных логов в зависимости от параматра среды выполнения
const { Logs } = require("./Logs.js");
const devLogs = new Logs(output, 'dev');
devLogs.add(jsObj);
const prodLogs = new Logs(output, 'any');
prodLogs.addError({'message':'oops'});