2012-02-21 70 views
2

日誌有些問題。他們在開發上工作得很好,但在製作過程中,我無法寫出自己的信息。導軌日誌在生產中無法正常工作

我沒有改變配置文件中的任何東西,除了安裝Devise和Mongoid。但是爲了以防萬一,我試着取消註釋行#config.log_level =:調試在production.rb


控制器:

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

    def about 
    end 
end 


終端(日誌權限):

 
[email protected]:/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 


候機樓(乘客):

 
[email protected]:/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 
+0

是否正在創建生產日誌,但沒有寫入?如果是這樣,那至少表明該應用程序具有對該目錄的寫入權限。如果生產日誌已經存在,那麼你確定你正在尋找新日誌的正確位置嗎?在我的應用程序中,使用Capistrano部署應用程序,日誌位於不同的目錄中。 – Snips 2012-02-21 21:03:15

+0

@snips是的,它是在log/production.log中創建的(你可以在原文中看到權限),但是沒有任何內容被寫入它。我從來沒有使用Capistrano,它看起來太複雜了,所以我不知道這一點。 – HappyDeveloper 2012-02-21 21:12:22

回答

5

假設您使用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修復了這個。

+0

感謝上帝。我已經在考慮回到PHP。我已經得救了。 – HappyDeveloper 2012-02-21 21:32:05

+0

今天Rails 3.2.2.rc1問世,解決了這個問題。最終的3.2.2應該在下週發佈。 – 2012-02-22 23:44:38