我正在使用NodeJS开发一个应用程序并在Heroku中部署。
我需要记录多行消息(例如堆栈跟踪和其他多行信息),但是希望将它们作为一条日志消息保留。
问题在于,当使用console.log
(或使用console.log
/ stdout
的任何框架)和多行消息时,它被解释为Heroku的多条消息(每条线路中有一条消息)原始信息)。
我认为问题在于Heroku会从流程“stdout
中读取消息,并且无法区分一条消息中的换行符(LF
/ CR
)或换行符在多个消息中,因此每行创建一个消息。
我尝试将消息直接发送到syslog(使用ain2)而不是stdout,它可以使用多行消息,但只能在我的本地环境中使用。
我想在Heroku中使用logplex / syslog做同样的事情吗?但是在使用带有默认参数(localhost,UDP,端口514)的syslog时,无法记录我的消息。
还有其他方法可以在Heroku中记录多行消息吗?这是平台的缺陷吗?
答案 0 :(得分:0)
我甚至不确定你对堆栈跟踪的成功程度,因为最终这是基于syslog
的,而Heroku可能对单个syslog
行的长度有限制。但不确定,当然不会知道限制。
您可以做的是用\n
替换每个\n>>>
(即:使用“>>>”开始每个续行),然后在日志处理中相应地解析它代码。