Как добавить пользовательские объекты JSON в Node.js Bunyan Logging? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть несколько вопросов о журналировании 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}

Итак, я пытаюсь отформатировать вывод следующим образом;

  1. Переопределить имя хоста или установить желаемое имя хоста
  2. Изменить "уровень": 30 на "уровень": "информация"
  3. Изменить формат объекта времени json
  4. Добавить дополнительный объект json, например: "attr4": "value"
  5. Есть ли способ изменить имя объекта json по умолчанию, например time на timestamp

Я не смог найти ни одного простого или понятного примера внесения каких-либо изменений выше. Кто-нибудь может показать мне несколько примеров для начала? Не нужно объединять все точки, но, по крайней мере, нужно начинать или какую-либо полезную документацию.

1 Ответ

0 голосов
/ 07 мая 2018

Оформление документации Banyan API. Все ваши случаи использования покрыты.

  1. Переопределить имя хоста или установить желаемое имя хоста

Настраивается при создании регистратора

  1. Изменить "уровень": 30 на "уровень": "информация"
  2. Изменить формат объекта времени json
  3. Добавить дополнительный объект json, например: "attr4": "value"
  4. Есть ли способ изменить имя объекта json по умолчанию, например, время на отметку времени

Вы можете переопределить объект 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.log(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)"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...