Nest 在日志中打印对象
Nest 在日志中打印对象
Nest 自带的日志方法 Logger.log
签名如下:
static log(message: any, context?: string, isTimeDiffEnabled?: boolean): void;
只能通过指定期中的 message
打印文本。
所以它不能像原生的 console.log
那样直接打印对象,比如:
console.log('var:',someVariable);
但你可能会说,使用模板字符串就可以解决,像这样:
Logger.log(`var: ${someVariable}`);
实际上得到的输出:
[1] [Nest] 24911 - 09/16/2020, 2:20:20 PM var: [object Object] +0ms
所以为了正常打印对象,还需要借助 node 自带的 util.inspect
将对象拍平:
import { inspect } from 'util';
Logger.log(`var: ${inspect(someVariable)}`);
// 作为对照:
console.log('var:', someVariable);
测试其输出:
[1] [Nest] 24911 - 09/16/2020, 2:20:20 PM var: { blah: 1, foo: { bar: 'xxx' } } +2282ms
[1] var: { blah: 1, foo: { bar: 'xxx' } }
输出结果能够正常阅读了。
借助于 inspect
,可以统一收敛日志的打印,而不用在单独需要打印对象的场景切换到 console.log
,对于后面对日志作统一管理,打标签收集都有好处。