【问题标题】:Save Logs on Heroku with Node使用 Node 在 Heroku 上保存日志
【发布时间】:2021-01-17 01:47:44
【问题描述】:

我正在尝试找到一种方法来存储日志,以便可以在我的网站上看到它们。

我有一个托管在 Heroku 中的网站,我使用 Winston 之类的包将日志保存到 .log 文件中。在 Heroku 中使用此系统时会出现问题,因为当 dyno 每天重新启动时,日志文件会被删除并创建一个全新的 .log 文件。

存储所有这些日志而不会在测功机重启时丢失的最佳方法是什么?

PD:我不监控日志,但我只是想要一种简单的方式来存储日志以供人们在我的网站上查看。现在它是通过读取 .log 文件来完成的。

【问题讨论】:

  • 您可以直接使用winston 将日志重定向到数据库中,例如here。此外,如果您想从客户端查看这些数据,您将需要一个 api 来查询这些数据。
  • 根据我的阅读,将日志存储到数据库并不是一个好主意。您认为使用 AWS 静态存储 .log 文件会更好吗?
  • 这取决于数量和用例。 Elasticsearch 可能是一个不错的选择。如果您想查询过去的日志,我不确定您是否要处理文件。

标签: node.js heroku logging winston


【解决方案1】:

一个有趣的选择可能是使用Papertrail:有一个免费计划,您可以获得一个 REST API 来查询日志(然后您可以自定义用户查看/下载的内容)。

Papertrail 有Heroku integration,因此从您的应用程序推送日志应该非常简单。然后,您可以通过 REST API 查询/导出实现访问所需的内容。

Heroku 还有一个Papertrail add-on,我认为它与上面的概念相同,但运行在 Heroku 云上。

显然,免费计划的数据保留时间很短,您需要看看这是否适合您。

【讨论】:

  • 我了解您如何将日志从 Heroku 保存到 Papertrail,但我如何能够在节点网站中获取所有这些日志以便在那里使用它们?
  • Papertrail 提供了一个 REST API (documentation.solarwinds.com/en/Success_Center/papertrail/…),使用它你可以查询和获取事件。您的网站(应用程序)将需要使用此 API 并运行查询
  • 我已经测试了 API 并且它可以工作,但是 Heroku 日志迫使我不要这样做,因为他们的日志很乱,其中一些甚至是空的。我只对应用程序日志感兴趣,而不对路由日志感兴趣。我想我可能必须创建一个数据库表并在那里上传日志。你怎么看?
  • 很高兴听到它有效。我会在使用 REST API 查询时过滤日志(也许您的应用程序日志具有特定格式或标签),因此您只会得到您想要的。使用 Papertrail 可以避免使用您自己的数据库(因此无需额外的成本或开发),但它仍然是一种选择。
猜你喜欢
  • 2016-08-28
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多