Журналы Rails не работают правильно в производстве - PullRequest
2 голосов
/ 22 февраля 2012

Что-то не так с логами. Они отлично работают при разработке, но на производстве я не могу писать свои собственные сообщения.

Я ничего не изменил в файлах конфигурации, кроме установки Devise и Mongoid. Но на всякий случай я попытался раскомментировать строку # config.log_level =: debug в production.rb


Контроллер:

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

  def about
  end
end


Терминал (права доступа):

root@ubuntu:/srv/www/myapp# ls log -lah
total 496K
drwxr-xr-x  2 myapp root    4.0K 2012-02-21 17:18 .
drwxr-xr-x 14 root  root    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 root  root    447K 2012-02-21 17:47 passenger.80.log
-rw-r--r--  1 myapp myapp      0 2012-02-21 17:18 production.log


Терминал (пассажирский):

root@ubuntu:/srv/www/myapp# passenger start -e production -p 80 --user=myapp
=============== Phusion Passenger Standalone web server started ===============
PID file: /srv/www/myapp/tmp/pids/passenger.80.pid
Log file: /srv/www/myapp/log/passenger.80.log
Environment: production
Accessible via: http://0.0.0.0/

You can stop Phusion Passenger Standalone by pressing Ctrl-C.
===============================================================================
cache: [HEAD /] miss
cache: [GET /] miss

1 Ответ

5 голосов
/ 22 февраля 2012

Если вы работаете на 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 исправляет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...