首页 > 解决方案 > 我在 Dokku rails 应用程序中的自定义日志文件在哪里?

问题描述

我在哪里可以找到我的 Rails 应用程序自定义日志?

例如:

efrsb_log ||= Logger.new("#{Rails.root}/log/get_trade_messages.log")
efrsb_log.error('No content in response')

在本地机器上,我可以在应用程序容器的确切位置看到它们。但是在生产服务器上,我在日志文件夹中什么也看不到。

dokku 是否将所有日志写入自己的一个文件?

如果是这样,我如何分离不同的日志信息?

标签: ruby-on-railsdokku

解决方案


如果您需要在生产中管理 dokku 应用程序的日志,最好在像 papertail 这样的系统日志云服务上处理它们(根据我的经验,这是迄今为止最好的日志接口,它不会破坏您的钱包)。

为此,您需要安装一个插件来导出您的日志。

1) 安装 dokku-logspout

dokku plugin:install https://github.com/michaelshobbs/dokku-logspout.git

2) 将 logspout 指向您的 PaperTrail 系统日志端点:

dokku logspout:server syslog+tls://logs.papertrailapp.com:12345

确保您的 PaperTrail 端点配置为接受 TLS 连接。

3) 安装 dokku-主机名:

dokku plugin:install https://github.com/michaelshobbs/dokku-hostname.git dokku-hostname

这将确保 PaperTrail 日志中的主机使用类似于 heroku 的工作人员名称,而不是 docker 容器 ID。

4) 运行 dokku logspout:start 并使用 logspout:stream 确保您的日志被正确聚合。

以下是您可能会遇到的几个问题:

  • 您可能需要重新构建您的应用程序,以便它们开始管道到 logspout。dokku ps:rebuildall
  • 当您重新部署您的应用程序时,类似 heroku 的程序名称将会丢失。要解决此问题,请运行 dokku logspout:stop && dokku logspout:start。希望这个问题能很快得到解决。
  • docker ps 返回一个守护进程错误。运行 sudo usermod -aG docker ubuntu && sudo reboot 作为 ubuntu。

来自“迈克·比安科


推荐阅读