ruby-on-rails - 我在 Dokku rails 应用程序中的自定义日志文件在哪里?
问题描述
我在哪里可以找到我的 Rails 应用程序自定义日志?
例如:
efrsb_log ||= Logger.new("#{Rails.root}/log/get_trade_messages.log")
efrsb_log.error('No content in response')
在本地机器上,我可以在应用程序容器的确切位置看到它们。但是在生产服务器上,我在日志文件夹中什么也看不到。
dokku 是否将所有日志写入自己的一个文件?
如果是这样,我如何分离不同的日志信息?
解决方案
如果您需要在生产中管理 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。
来自“迈克·比安科”
推荐阅读
- java - VLCJ - 在 64 位 Linux 上捆绑原生 VLC 库
- javascript - 自动跳到表格单元格中的下一个输入字段
- postgresql - flyway 无法连接到 docker-entrypoint-initdb.d 脚本中的 postgres 容器
- c++ - 如何通过索引访问枚举类?
- javascript - Java 的 next() 和 hasNext() 方法的原生 JS 替代方案
- laravel - AWS Elastic Beanstalk 上的多个 docker 容器,如何扩展每个容器?
- javascript - Javascript 有助于动态创建 html 元素并将元素填充到 DOM
- neural-network - 用于设计神经网络架构的模板
- javascript - 当高度和宽度都需要改变时保持纵横比
- ios - 使用 NSExtension 的基于 Swift 的 iOS 应用扩展