首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails应用程序在ubuntu服务器(nginx+passenger+capistrano)上的日志在哪里?

Rails应用程序在ubuntu服务器(nginx+passenger+capistrano)上的日志在哪里?
EN

Stack Overflow用户
提问于 2020-01-13 13:27:53
回答 2查看 1.7K关注 0票数 3

我们有一个Rails 6应用程序,它通过以下设置部署到Ubuntu服务器上:

Nginx1.17和客运6,发布版本使用capistrano v3部署。

我可以找到以下日志文件:

  • Nginx (访问和错误日志):

/var/log/nginx/access.log & /var/log/nginx/error.log

  • 乘客日志:(关于登载)

/home/deploy/myapp/current/log/staging.log

在客运日志中编写的日志(正如我所理解的那样应该有应用程序日志),只有用于表迁移和创建的Ruby日志,而不是ruby应用程序日志。

因此,上面所有的日志都没有Rails应用程序日志(即:显示Rails细节的日志,如dev env中的rails s输出)& nginx访问日志只显示页面加载时的静态资产日志,而不是ruby或sql日志。

对我来说,逻辑的地方,staging.log file,只有陈旧的日志数据&没有任何新的Rails日志写入到它

请问Rails应用程序日志在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-13 16:57:34

在内森评论的指导下,解决这一问题的功劳归于他:

这一问题的原因是:

staging.rb中,我为日志设置了这个配置

& env变量定义为export RAILS_LOG_TO_STDOUT='enabled'

代码语言:javascript
运行
复制
  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger = ActiveSupport::TaggedLogging.new(logger)
  end

因此,移除env变量:

RAILS_LOG_TO_STDOUT='enabled'

允许Rails日志按预期显示在正确的目录中:

/home/user/project-name/current/log/staging.log

票数 1
EN

Stack Overflow用户

发布于 2020-01-13 13:43:47

Rails默认情况下将其日志写入log/ENVIRONMENT.log文件(其中ENVIRONMENTRAILS_ENV环境变量的值替换)。

因此,在您的生产环境中,可能会将日志写入/home/deploy/myapp/current/log/production.log

注意,如果该文件不存在,Rails将尝试创建该文件。如果运行应用程序的用户没有创建(或写入)文件所需的权限,那么它根本不写日志。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档