我们有一个Rails 6应用程序,它通过以下设置部署到Ubuntu服务器上:
Nginx1.17和客运6,发布版本使用capistrano v3部署。
我可以找到以下日志文件:
/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应用程序日志在哪里?
发布于 2020-01-13 16:57:34
在内森评论的指导下,解决这一问题的功劳归于他:
这一问题的原因是:
在staging.rb
中,我为日志设置了这个配置
& env变量定义为export RAILS_LOG_TO_STDOUT='enabled'
# 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
发布于 2020-01-13 13:43:47
Rails默认情况下将其日志写入log/ENVIRONMENT.log
文件(其中ENVIRONMENT
被RAILS_ENV
环境变量的值替换)。
因此,在您的生产环境中,可能会将日志写入/home/deploy/myapp/current/log/production.log
。
注意,如果该文件不存在,Rails将尝试创建该文件。如果运行应用程序的用户没有创建(或写入)文件所需的权限,那么它根本不写日志。
https://stackoverflow.com/questions/59717605
复制相似问题