2012-09-05 151 views
4

我無法在任何地方找到有關如何使queue_classic將日誌寫入文件的解決方案。 Queue_Classic用於記錄的滾動似乎也沒有任何示例。如何配置queue_classic日誌記錄

有人可以提供一個工作的例子嗎?

+0

你也可以問你的問題Queue_Classic GitHub上的寶石autors如果谷歌無法找到答案。 – bmalets

回答

0

QC所調用的方法中的記錄將成爲記錄的來源。例如,在rails中。任何對Rails.logger的調用都將轉到適合您的RAILS_ENV的日誌文件。來自卷軸的日誌數據發送到標準輸出,因此您可以在啓動它們時將隊列中的標準輸出傳輸到日誌文件。

您可以用god.rb給予類似這樣(我已經離開你的配置隊列數量,目錄等給你)一個god.rb配置實例控制你的隊列:

number_queues.times do |queue_num| 
    God.watch do |w| 
    w.name = "QC-#{queue_num}" 
    w.group = "QC" 
    w.interval = 5.minutes 
    w.start = "bundle exec rake queue:work" # This is your rake task to start QC listening 
    w.gid = 'nginx' 
    w.uid = 'nginx' 
    w.dir = rails_root 
    w.keepalive 
    w.env = {"RAILS_ENV" => rails_env} 
    w.log = "#{log_dir}/qc.stdout.log" # Or.... "#{log_dir}//qc-#{queue_num}.stdout.log" 

    # determine the state on startup 
    w.transition(:init, { true => :up, false => :start }) do |on| 
     on.condition(:process_running) do |c| 
     c.running = true 
     end 
    end 
    end 
end 

FWIW,我發現STDOUT日誌數據不太有用,可能最終只發送給bitbucket。

如果日誌數據沒用,我們應該考慮刪除它。

當我從命令行運行它時,DEBUG非常好。當我試圖弄清楚我所做的一切時(通常是捆綁問題,路徑問題等)。或者當我要演示隊列中正在發生的事情時。

對我來說,INFO日誌由標準的lib = queue_classic level = info action = insert_job elapsed = 16消息和分叉執行或PostgreSQL中的任何STDOUT/STDERR組成。我沒有擴展任何日誌類,因爲滾動進入STDOUT,我的任務位於提供日誌記錄的環境中。

當然,它可以被刪除。我認爲真的取決於環境和隊列正在做什麼。如果我要做的事情沒有Rails.logger,那麼我會使用QC.log並更有效地滾動,並以這種方式來測試我的任務。

當我玩它的時候,我可能會保留我的配置,只是因爲輸出來自任務本身調用的方法/應用程序。我可能會決定重寫QC.log代碼以添加日期/時間。我仍在努力確定什麼符合我的需求。

對不起,我最後一行真的關注於我給出的環境示例。

原來這裏:enter link description here