如何在 Node.js Bunyan Logging 中添加自定义 JSON 对象?

2024-02-14

我对 Node.js Bunyan 日志记录有几个问题。我对班扬伐木有点陌生,所以如果我问任何外行问题,请我道歉。

我正在尝试以 json 格式流式传输 Bunyan 日志输出。主要在一个文件中,我计划将其传输到远程主机。

这是我正在尝试的一个简单代码:

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. 将“level”:30更改为“level”:“info”
  3. 更改时间json对象的格式
  4. 添加额外的 json 对象,例如:"attr4": "value"
  5. 有什么方法可以更改默认的 json 对象名称,例如time to timestamp

我找不到任何简单或明确的示例来进行上述任何更改。有人可以给我举一些例子吗?不需要将所有要点放在一起,但至少有一个良好的开端或任何有用的文档。


查看 Banyan API 文档。涵盖了您的所有用例。

  1. 覆盖主机名或设置所需的主机名

构建记录器时可配置

  1. 将“level”:30更改为“level”:“info”
  2. 更改时间json对象的格式
  3. 添加额外的 json 对象,例如:“attr4”:“value”
  4. 有没有办法更改默认的json对象名称,例如时间到时间戳

您可以覆盖 json 对象:请参阅:https://github.com/trentm/node-bunyan/issues/194 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"
});

Output:

{
  "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)"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js Bunyan Logging 中添加自定义 JSON 对象? 的相关文章

随机推荐