为什么 Rails 不写入 development.log
Why is Rails not writing to development.log
我的 Rails 4.2 应用程序突然没有向 development.log 写入任何内容。
绝对没有!
我已尝试检查正在使用的正确环境、重新启动服务器、检查可能与记录器交互的 gem、检查权限、logger.flush
和 rake 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
Whosebug 上有很多类似的问题,但 none 提供了一个对我的情况有效的答案。
我不知道是什么原因导致的,也不知道如何系统地调试。
我应该采取什么步骤?
我认为您的问题可能是由以下原因引起的:
您设置了高日志级别。检查您的 application.rb
和 environments\*.rb
文件:
# Set to :debug to see everything in the log.
config.log_level = :error
您设置了自定义日志记录。检查您的 application.rb
、environments/*.rb
和 initializers/*.rb
:
中的所有文件
# Use a different logger for distributed setups.
config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
这两个步骤应该可以帮助您调查问题并解决问题。
好吧,兜兜转转,终于找到了罪魁祸首
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 帮助我朝着正确的方向思考。
如果在 AWS(或类似的)中,您必须确保您的日志目录具有写入权限。
将以下行添加到 config/environments/development.rb
config.log_level = :debug
重启服务器
我的 Rails 4.2 应用程序突然没有向 development.log 写入任何内容。
绝对没有!
我已尝试检查正在使用的正确环境、重新启动服务器、检查可能与记录器交互的 gem、检查权限、logger.flush
和 rake 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
Whosebug 上有很多类似的问题,但 none 提供了一个对我的情况有效的答案。
我不知道是什么原因导致的,也不知道如何系统地调试。
我应该采取什么步骤?
我认为您的问题可能是由以下原因引起的:
您设置了高日志级别。检查您的
application.rb
和environments\*.rb
文件:# Set to :debug to see everything in the log. config.log_level = :error
您设置了自定义日志记录。检查您的
中的所有文件application.rb
、environments/*.rb
和initializers/*.rb
:# Use a different logger for distributed setups. config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
这两个步骤应该可以帮助您调查问题并解决问题。
好吧,兜兜转转,终于找到了罪魁祸首
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 帮助我朝着正确的方向思考。
如果在 AWS(或类似的)中,您必须确保您的日志目录具有写入权限。
将以下行添加到 config/environments/development.rb
config.log_level = :debug
重启服务器