node.js 中打印日志的时候,如何把文件名和代码行数也打印出来?
发布于 9 年前 作者 JamCode 14890 次浏览 最后一次编辑是 8 年前 来自 问答

比如用log4js做日志打印,在打印的时候如何把当前.js文件和当前代码行打印出来 ,方便日志排查问题的时候可以迅速锁定代码和文件

9 回复

如果我理解正确的话,需要打印行数之类的应该是要纪录异常吧。 出错行和调用堆栈在 error.stack 里面。看下这个是不是你想要的

@klesh 不一定是要异常才打印代码行和文件数,而是在日志前缀中就加入文件和代码行,每一条日志

@thesadboy 这个怎么个log4js关联起来呢??

@JamCode 无异常的情况下,获取 call stack 信息,在正常的环境下应该是不可能的。我能想到的方式是让程序在 debug 模式下运行,然后断点,然后读取 call stack, 就像我们在调试脚本一样。这样的方式代价是巨大而无法承受的!最可行的方式是纪录 caller 的 function name 代价较小。 或者强制 log 的时候必须输入相关信息以便定位

tracer就是用异常来实现的

噢对,直接在抛出异常再读stack就行了,我想复杂了。不过这样做代价很大。

可以参考看看pomelo-logger模块

@wangyangkobe 这个 好像不能像log4j一样打印到文件,并且按日期分割啊

回到顶部