我已经将 ruby on rails 4.0.3 应用程序部署到服务器上,该服务器已配置了以下可能相关的软件:
- Ubuntu 12.04.4 x64 服务器
- Phusion Passenger 4.0.37
- Apache 2.2.22
- Ruby 2.0.0p353
- Rails 4.0.3 / Capistrano 2.15.5 / Rake 10.1.1
除 Rails 应用程序日志记录外,应用程序的所有功能似乎都运行正常。我的期望是,所有特定于应用程序的内容都应写入 {Rails.root}/log/production.log 文件。但是,所有内容似乎都写入了 /var/log/apache2/error.log。
下面是 apache error.log 的摘录,用来说明我的意思:
App 1495 stdout: Started GET "/" for 192.168.1.106 at 2014-03-08 17:26:04 -0500
App 1495 stdout: Processing by HomeController#index as HTML
App 1495 stdout: Rendered home/index.html.erb within layouts/application (0.1ms)
App 1495 stdout: Rendered layouts/_header.html.erb (2.0ms)
App 1495 stdout: Rendered home/_auth.html.erb (0.4ms)
App 1495 stdout: Rendered layouts/_footer.html.erb (0.1ms)
App 1495 stdout: Completed 200 OK in 9ms (Views: 5.8ms | ActiveRecord: 0.0ms)
我发现有趣的是,log/production.log 甚至被创建了,但却没有任何内容被写入其中。
我调查过/验证过的一些事情:
- RAILS_ENV=生产
- {Rails.root}/config/environments/production.rb 设置为所有默认值
- 我的 apache/passenger 设置大部分是默认的,除了必须为我的应用程序添加虚拟主机条目,如下所示:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/apps/myapp/current/public RailsEnv production </VirtualHost>
- rails 应用程序中所有文件的权限似乎都很好——无奈之下,我尝试向 log/production.log 授予“777”权限,但无济于事。
我很乐意根据要求提供任何其他应用程序配置信息或环境详细信息。
答案1
我遇到过类似的情况。在我的例子中,#{Rails.root}/config.ru
包含了行use Rails::Rack::LogTailer
。这导致所有 Rails 日志也被添加到/var/log/apache2/error.log
。