У меня есть несколько вопросов о ведении журнала Bunyan в Node.js. Я вроде как новичок в ведении журнала bunyan, поэтому прошу прощения, если я задам какие-либо вопросы непрофессионалам.
Я пытаюсь передать вывод журнала bunyan в формате json. В основном в файле, и я планирую передать его на удаленный хост.
Вот простой код, который я пробую:
var bunyan = require("bunyan");
var logger = bunyan.createLogger({
name: "testApp",
streams: [
{
path: "bunayan.log"
}
],
src: true
});
logger.info("Data sent to file");
Результат:
{"name":"testApp","hostname":"xxx.xxx.com","pid":14124,"level":30,"msg":"Data sent to file","time":"2018-05-07T19:14:15.866Z","src":{"file":"/path/to/file/banyan_test.js","line":11},"v":0}
Итак, я пытаюсь отформатировать вывод следующим образом:
"attr4": "value"time, на timestampЯ не смог найти ни одного простого или ясного примера внесения любого из вышеперечисленных изменений. Кто-нибудь может показать мне несколько примеров для начала? Необязательно сводить все вместе, но, по крайней мере, нужно начинать работу или какую-либо полезную документацию.

Ознакомьтесь с документацией по API Banyan. Охвачены все ваши варианты использования.
Настраивается при построении регистратора
Вы можете переопределить объект json: См. Это: https://github.com/trentm/node-bunyan/issues/194
var bunyan = require('bunyan');
function modifiedStream(filePath) {
return {
write: log => {
log.level = bunyan.nameFromLevel[log.level];
log.time = new Date().valueOf();
log._timeStamp = new Date().toISOString();
log.myProp = "Some Value" + new Date();
var logLine = JSON.stringify(log, bunyan.safeCycles(), 2);
console.info(logLine);
}
};
}
var logger = bunyan.createLogger({
name: 'myapp',
hostname: "My Test Mac",
streams: [{
type: 'raw',
stream: modifiedStream()
}]
});
logger.info("Hello");
logger.info({
customProp1: "AAA",
customProp2: "BBB"
});
Выход:
{
"name": "myapp",
"hostname": "My Test Mac",
"pid": 89297,
"level": "info",
"msg": "Hello",
"time": 1525813632657,
"v": 0,
"_timeStamp": "2018-05-08T21:07:12.657Z",
"myProp": "Some ValueWed May 09 2018 02:37:12 GMT+0530 (IST)"
}
{
"name": "myapp",
"hostname": "My Test Mac",
"pid": 89297,
"level": "info",
"customProp1": "AAA",
"customProp2": "BBB",
"msg": "",
"time": 1525813632659,
"v": 0,
"_timeStamp": "2018-05-08T21:07:12.659Z",
"myProp": "Some ValueWed May 09 2018 02:37:12 GMT+0530 (IST)"
}
Это Исаак из Перу.
Только вы должны добавить в свойство log.fields поле «вот ваша собственность». Если вы хотите изменить формат времени, вы должны изменить атрибут времени следующим образом:
log.fields.time = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
Настраиваемое свойство, например:
log.fields.hola = "hola";
Добавляйте только «момент» npm в заголовок вашего класса.
Это пример кода моего класса logger.js.
const bunyan = require('bunyan');
const moment = require('moment');
function info(paramLog){
let log = bunyan.createLogger({
name: 'MyLoggerName',
streams:[
{
level:'info',
stream: process.stdout
}
]
});
log.fields.time = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
if (paramLog && paramLog !== undefined && paramLog !==null){
log.info(JSON.stringify(paramLog));
}
}
module.exports = {
info
}
Результат такой:
{"name":"MyLoggerName","hostname":"USER10","pid":14880,"time":"2021-02-17 18:04:03","level":30,"msg":"\"---end update\"","v":0}
Попробуйте и успешно с тестом.
Я просмотрел этот документ: npmjs.com/package/bunyan, но не понял, как это сделать при потоковой передаче вывода json