production.log中没有日志消息

时间:2012-03-09 14:19:19

标签: ruby-on-rails ruby-on-rails-3 passenger

我编写了一个演示版HelloWorld Rails应用程序并使用WEBrick测试它(它甚至不使用数据库,它只是一个打印“hello world”的控制器)。然后我尝试将其部署到使用Passenger的本地Apache。事实上,这个测试只是让Passenger工作(这是我第一次在Apache上部署)。现在我甚至不确定Passenger是否正常工作,但我在Apache方面没有任何错误。

当我触发http://rails.test/时,浏览器显示Rails 500错误页面 - 所以我假设P​​assenger正常工作。 我想调查日志,但是生产.log会出现空白!我不认为这是一个权限问题,因为如果删除该文件,则会在重新加载页面时重新创建。我试图在conf/environments/production.rb中更改日志级别,尝试使用Rails控制台生成手动写入日志文件并

 Rails.logger.error('asdf')

它返回true但没有任何内容写入production.log。路径(根据Rails.logger.inspect获得)是正确的,我注意到如果我手动删除它,该文件将被重新创建。我怎么知道发生了什么?

(我已经检查了Apache日志,另外我为Passenger设置了最高的调试级别,但它似乎是一个Rails问题,所以服务器没有记录)

2 个答案:

答案 0 :(得分:13)

假设您正在运行Rails 3.2.1,这是一个错误。那是patched in 3.2.2

如果因任何原因无法升级到3.2.2,this comment on GitHub has a workaround

# config/initializers/patch_rails_production_logging.rb
Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger

答案 1 :(得分:3)

设置此功能适用于Rails 3.2.11:

Rails.logger = ActiveSupport::BufferedLogger.new(Rails.root.join("log","production.log"))