node.js - 在 heroku 中记录多行消息

标签 node.js logging heroku

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

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

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

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

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

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

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

最佳答案

我什至不确定堆栈跟踪的成功程度,因为最终这是基于 syslog 的,而 Heroku 可能对单个 syslog< 的长度有限制行。不过不确定,而且肯定不知道这个限制。

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

关于node.js - 在 heroku 中记录多行消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19492312/

相关文章:

javascript - 使用node js搜索字符串mongodb中的任何单词

c++ - 通过代码确定控制台是否应保存到文件(以及该文件的名称)

c# - 在Visual Studio中运行.net应用程序时,我们可以直接登录Cloudwatch吗

javascript - Heroku - 带 Gulp 和 Browserify 的 Node : Error Cannot find module from

ruby-on-rails - 如何在 heroku 中为单个应用程序添加多个子域?

node.js - 使用 forever 在 Ubuntu 上运行 node.js 服务器

node.js - Bluebird:获取each()的结果

javascript - Nodejs应用程序中身份验证重定向的无限循环

c# - 使用 Serilog 登录到事件查看器时动态设置 EventID

django - 无法在heroku上启动gunicorn(Django Node应用程序)错误: Connection in use: ('0.0.0.0' , 46831)