node.js - 来自 Node 的堆栈跟踪有时会被截断。我怎样才能看到完整的错误?

标签 node.js stack-trace systemd journal

我有一条(故意)使我的 Node 应用程序崩溃的路线。当我访问该路线时,我得到了正确的崩溃日志:

/Users/me/Documents/myapp/routes/index.js:795
            global.fakeMethod();
                   ^

TypeError: global.fakeMethod is not a function
    at null._onTimeout (/Users/me/Documents/myapp/routes/index.js:795:11)
    at Timer.listOnTimeout (timers.js:92:15)

但是,当我在 systemd 下运行相同的代码时,错误被截断。它

May 17 10:03:56 a.myapp.com www[28766]: /var/www/myapp/routes/index.js:795
May 17 10:03:56 a.myapp.com systemd[1]: myapp.service: main process exited, code=exited, status=1/FAILURE
May 17 10:03:56 a.myapp.com systemd[1]: Unit myapp.service entered failed state.
May 17 10:03:56 a.myapp.com systemd[1]: myapp.service failed.
May 17 10:03:56 a.myapp.com systemd[1]: myapp.service holdoff time over, scheduling restart.

如何让 systemd/journald 记录完整错误?

更新:使用 systemd-cat 进行测试,我制作了一个多行文件并记录它的工作原理:

cat file.txt | systemd-cat

结果:

Mar 02 09:51:25 a.certsimple.com unknown[31600]: line one
Mar 02 09:51:25 a.certsimple.com unknown[31600]: line two
Mar 02 09:51:25 a.certsimple.com unknown[31600]: line three

最佳答案

我最好的选择是它与应用程序终止之前未刷新 stderr/stdout 有关。

有什么方法可以告诉您的应用程序使用同步系统日志协议(protocol)打印堆栈跟踪,而不是在标准输出上打印。

关于node.js - 来自 Node 的堆栈跟踪有时会被截断。我怎样才能看到完整的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35732106/

相关文章:

java - 将 Spring Boot 应用程序作为 systemd 服务运行时未创建 pid 文件

javascript - 将文本附加到现有 json 文件 node.js

java - 为什么使用 "new Throwable().getStackTrace()[1].getMethodName()"获取结果被称为昂贵?

java - Stacktrace Java Eclipse 中的未知来源

ios - cellForRowAtIndexPath 被调用但没有堆栈跟踪

uwsgi - 使用 unix socket 运行 Uvicorn

linux - 阻止服务启动

node.js - 如何在 Loopback 4 身份验证策略中重定向?

javascript - highland.js 异步数组到值流

node.js - 升级到 NodeJS 6 后 key 长度无效