gpt4 book ai didi

node.js - 使用 Pino 作为 Sequelize 的记录器

转载 作者:行者123 更新时间:2023-12-03 22:18:29 33 4
gpt4 key购买 nike

我正在尝试将 PinoSequelize options.logging 一起使用:

A function that gets executed every time Sequelize would log something. Function may receive multiple parameters but only first one is printed by console.log. To print all values use (...msg) => console.log(msg)



这是我尝试过的:
const pino = require('pino')
const logger = pino({ level: 'debug', prettyPrint: true })
const Sequelize = require('sequelize')

sequelize = new Sequelize({
dialect: 'sqlite',
storage: '../db.sqlite3',
logging: logger.debug()
})

但是没有任何内容打印到控制台。我知道日志记录正在工作,因为我 logger.debug('test') 在代码中的其他地方调用时工作。

我找到了 this 库(来自 this 问题),但我不确定如何将它与 Sequelize 一起使用。

最佳答案

你不需要调用你的函数,你只需要将它传递给 Sequelize。

所以基本上你应该写 logging: msg => logger.info(msg) ,例如。不要担心丢失其他一些参数,console.log 只使用第一个(如 documentation 中所述)。

简单的工作示例:

{
// ...

logging: sql => logger.info(sql),

// ...
}
console.log 行为的完整(或几乎完整)克隆:

{
// ...

logging: (sql, timing) => logger.info(sql, typeof timing === 'number' ? `Elapsed time: ${timing}ms` : ''),

// ...
}

提示:您可以为每个查询使用 logging 选项,它们显然会以相同的方式工作。

提示#2:您也可以使用 logging: logger.info.bind(logger) 。但是如果你选择这个,你可能会寻找另一种解决方法:)

关于node.js - 使用 Pino 作为 Sequelize 的记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691894/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com