【问题标题】:Rails logs not working correctly in productionRails 日志在生产中无法正常工作
【发布时间】:2012-03-12 04:50:26
【问题描述】:

日志有问题。它们在开发中运行良好,但在生产中我无法编写自己的消息。

除了安装 Devise 和 Mongoid 之外,我没有更改配置文件中的任何内容。但以防万一,我尝试在 production.rb 中取消注释 #config.log_level = :debug


控制器:

class PagesController < ApplicationController
  def home
    logger.fatal 'bla'
  end

  def about
  end
end


终端(日志权限):

root@ubuntu:/srv/www/myapp# ls log -lah 总计 496K drwxr-xr-x 2 myapp root 4.0K 2012-02-21 17:18。 drwxr-xr-x 14 根根 4.0K 2012-02-20 14:54 .. -rw-r--r-- 1 myapp myapp 35K 2012-02-21 16:23 development.log -rw-r--r-- 1 myapp root 0 2012-02-17 18:27 .gitkeep -rw-r--r-- 1 根根 447K 2012-02-21 17:47passenger.80.log -rw-r--r-- 1 myapp myapp 0 2012-02-21 17:18 production.log


航站楼(乘客):

root@ubuntu:/srv/www/myapp# 乘客开始 -e 生产 -p 80 --user=myapp =============== Phusion Passenger 独立网络服务器启动 ================ PID 文件:/srv/www/myapp/tmp/pids/passenger.80.pid 日志文件:/srv/www/myapp/log/passenger.80.log 环境:生产 可通过以下方式访问:http://0.0.0.0/ 您可以按 Ctrl-C 停止 Phusion Passenger Standalone。 ==================================================== ============================== 缓存:[HEAD /] 未命中 缓存:[GET /] 未命中

【问题讨论】:

  • 是否正在创建生产日志,但没有写入?如果是这样,那至少表明该应用程序对该目录具有写入权限。如果该生产日志已经存在,那么您确定您正在寻找新日志的正确位置吗?在我的应用程序中,应用程序是使用 Capistrano 部署的,日志位于不同的目录中。
  • @snips 是的,它是在 log/production.log 中创建的(您可以在原始帖子中看到权限),但没有写入任何内容。我还没用过 Capistrano,它看起来太复杂了,所以我不知道。

标签: ruby-on-rails logging


【解决方案1】:

假设您使用的是 Rails 3.2.0 或 Rails 3.2.1,这是一个已知问题(请参阅 https://github.com/rails/rails/issues/4277)。已经修复了,但是还没有发布。

一种解决方法是添加一个初始化器:

Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger

更新:Rails 3.2.2 修复了这个问题。

【讨论】:

  • 感谢上帝。我已经在考虑回到 PHP。我得救了。
  • Rails 3.2.2.rc1 今天发布,修复了这个问题。最终的 3.2.2 应该会在下周发布。
猜你喜欢
  • 2018-02-09
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多