我的公司有一个自定义开发的记录程序包,我们希望将其用作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
还包含error
,debug
,fatal
,warn
,trace
,child
函数,但函数主体一样。
结果是:
{"level":30,"time":1553095994942,"msg":"Server listening at http://127.0.0.1:3000","pid":14543,"hostname":"VirtualBox","v":1}
whitch是默认的Pino输出。
答案 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,您可以检查应用于参数的记录器验证