2013-10-21 46 views
3

我正在使用NodeJS开发应用程序并部署在Heroku中。在heroku中记录多行消息

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

的问题是,当使用console.log(或使用console.log/stdout任何框架)具有多行消息它解释等多个消息由Heroku的(一个消息每行的原始消息中)。

我认为问题在于,Heroku的从过程stdout读取消息和线不能区分馈送(LF/CR)在一个消息中或在多个消息中的换行,从而产生每行一个消息。

我试图直接发送消息到系统日志(使用ain2),而不是标准输出,它适用于多行消息,但只适用于我的本地环境。

我想在使用logplex/syslog的Heroku中做同样的事情吗?但是在使用带有默认参数(本地主机,UDP,端口514)的系统日志时无法获得我的消息记录。

是否有任何其他方式来记录Heroku中的多行消息的工作?这是平台上的不足吗?

回答

0

我什至不知道你会如何成功的堆栈跟踪,因为这最终是基于syslog,和Heroku上可能对单一syslog线的长度是有限的。但是,不确定,当然也不知道这个限制。

你可以做的是每\n\n>>>(即:用“>>>”开始每个延续行),然后在你的日志处理代码中相应地解析它。

+0

谢谢,我已经测试了一些正常的消息大小,似乎没问题。如果我使用更长的消息(大约2KB),他们似乎会被修剪。但无论如何,无论有没有换行符,都会发生这种情况。 –

+0

替换选项可能是一个选项,但仍在寻找不需要任何预/后处理的选项,并且使消息更具人性化可读性。 –