如何在Fastify中使用自定义记录器?

时间:2019-03-20 15:46:04

标签: node.js logging fastify

我的公司有一个自定义开发的记录程序包,我们希望将其用作fastify中的默认记录程序。我试图通过下面的这个简单示例来了解如何注册我的记录器,巴菲特始终使用Pino。

index.js

const log = require("./Logger");
const fastify = require("fastify")({ logger: log });

fastify.get("/", (request, reply) => {
    request.log(
        "includes request information, but is the same logger instance as `log`"
    );
    reply.send({ hello: "world" });
});

fastify.listen(3000)

logger.js

function Logger(...args) {
    this.args = args;
}
Logger.prototype.info = function(msg) {
    console.log("myLogger", msg);
};

logger.js还包含errordebugfatalwarntracechild函数,但函数主体一样。

结果是:

{"level":30,"time":1553095994942,"msg":"Server listening at http://127.0.0.1:3000","pid":14543,"hostname":"VirtualBox","v":1}

whitch是默认的Pino输出。

1 个答案:

答案 0 :(得分:1)

here所述,您的记录器

  

必须具有以下方法

因此,此示例有效:

function Logger(...args) {
  this.args = args;
}
Logger.prototype.info = function (msg) { console.log("myLogger", msg); };
Logger.prototype.error = function (msg) { console.log("myLogger", msg); };
Logger.prototype.debug = function (msg) { console.log("myLogger", msg); };
Logger.prototype.fatal = function (msg) { console.log("myLogger", msg); };
Logger.prototype.warn = function (msg) { console.log("myLogger", msg); };
Logger.prototype.trace = function (msg) { console.log("myLogger", msg); };
Logger.prototype.child = function () { return new Logger() };


const myLogger = new Logger()
const app = require('fastify')({
  logger: myLogger
})

app.get("/", (request, reply) => {
  request.log.info('hi');
  reply.send({ hello: "world" });
});

app.listen(3000)

Here,您可以检查应用于参数的记录器验证