为什么Rails没有写入development.log

时间:2015-03-14 08:24:28

标签: ruby-on-rails logging

突然间,我的Rails 4.2应用程序没有向development.log写任何内容。

绝对没有!

我尝试检查正在使用的正确环境,重新启动服务器,检查可能与记录器交互的gem,检查权限logger.flushrake log:clean

日志文件现在完全为空,并且没有写入任何内容。

正在运行rails s

=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-03-14 18:49:57] INFO  WEBrick 1.3.1
[2015-03-14 18:49:57] INFO  ruby 2.1.5 (2014-11-13) [x86_64-darwin14.0]
[2015-03-14 18:49:57] INFO  WEBrick::HTTPServer#start: pid=3963 port=3000

Stackoverflow上有很多类似的问题,但没有一个提供了我的案例中有效的答案。

我不知道会导致这种情况或者如何系统地调试。

我应该采取什么措施?

4 个答案:

答案 0 :(得分:22)

好吧,经过多次转圈,我终于找到了罪魁祸首。

rails_12factor显然覆盖了config.logger。

请参阅:https://github.com/heroku/rails_stdout_logging/blob/master/lib/rails_stdout_logging/rails3.rb#L7

我从开发环境中移除了这个gem(我实际上只需要在部署的环境中使用它),现在一切正常。

要将gem放入生产中,它需要位于这样的gem环境组中:

# This is override development.log output and should only go in production.
group :production do
  gem 'rails_12factor'
end

感谢@maxd帮助我思考正确的方向。

答案 1 :(得分:1)

我认为您的问题可能由以下因素引起:

  1. 您设置为高日志级别。检查您的application.rbenvironments\*.rb文件:

    # Set to :debug to see everything in the log.
    config.log_level = :error
    
  2. 您设置自定义日志记录。查看application.rbenvironments/*.rb以及initializers/*.rb中的所有文件:

    # Use a different logger for distributed setups.
    config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
    
  3. 这两个步骤可以帮助您调查问题并进行修复。

答案 2 :(得分:0)

如果在AWS(或类似)中,您必须确保您的日志目录具有写访问权。

答案 3 :(得分:0)

将以下行添加到config/environments/development.rb

config.log_level = :debug

重启服务器

相关问题