3

我正在使用 NodeJS 开发一个应用程序并部署在 Heroku 中。

我需要记录多行消息(例如堆栈跟踪和其他多行信息),但希望将它们分别保留为一条日志消息。

问题是,当使用console.log(或任何使用console.log/的框架stdout)和多行消息时,它被 Heroku 解释为多条消息(原始消息中的每一行一条消息)。

我认为问题在于 Heroku 从进程中读取消息,stdout并且无法区分一条消息中的换行符(LF/ CR)或多条消息中的换行符,因此每行创建一条消息。

我尝试将消息直接发送到 syslog(使用ain2)而不是标准输出,它适用于多行消息,但仅适用于我的本地环境。

我想在使用 logplex/syslog 的 Heroku 中做同样的事情?但是在使用带有默认参数(localhost、UDP、端口 514)的 syslog 时无法记录我的消息。

有没有其他方法可以在 Heroku 中记录多行消息?这是平台的不足吗?

4

1 回答 1

0

我什至不确定你会在堆栈跟踪方面取得多大成功,因为最终这是syslog基于 - 的,而且 Heroku 可能对单行的长度有限制syslog。不过,不确定,当然也不知道这个限制。

您可以做的是将每个替换\n\n>>>(即:每个续行都以“>>>”开头),然后在您的日志处理代码中相应地解析它。

于 2013-10-21T10:56:03.467 回答