我有一个函数,它使用传递给它的 bunyan 记录器进行记录。
全局记录器在整个应用程序中使用,为许多组件提供记录工具。这样我们就有了一个集中的日志。大多数时候,我们只是将这个全局记录器传递给所有需要它的函数。
然而,在某些情况下,当我调用上述函数时,我希望能够访问由这个确切的函数调用写入的日志,但同时我想保持标准的日志记录行为(即将日志写入集中式日志),所以我不能只向它传递一个新的记录器实例。
用 bunyan 解决这个问题的最佳方法是什么?
代码应该看起来像这样:
const funcCallLogger = globalLogger.cloneSomehow();
doSomeWork(funcCallLogger).then(() => {
const logs = funcCallLogger.getWritenLogs();
// logs should be an array of all logs written to funcCallLogger
// at the same time all logs written to funcCallLogger must also be
// reflected in globalLogger
});
function doSomeWork (logger) {
logger.info('Doing some work...');
await ...
}
我正在考虑创建一个子记录器并为其分配一个自定义流以进行日志收集,但我不确定这是否是最好的解决方案。