2013-07-09 105 views
2

我需要在Padrino中創建一個自定義日誌文件,其中包含標準輸出中的所有日誌記錄信息以及自定義日誌消息。我已經能夠獲得創建的自定義日誌文件,但stdout文件(development.log,production.log等)仍然使用日誌語句創建。我試圖把這些行的boot.rb文件,但這些都不似乎工作:Padrino自定義日誌文件

Padrino::Logger::Config[:development][:stream] = :to_file 

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file } 

Padrino::Logger::Config[:development][:stream] = :null 

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :null} 

我已經看過Padrino的development commandslogger documentation,但他們並沒有幫助。

如果有幫助,這是生成自定義日誌文件的代碼。 (無論我是否運行此代碼,標準輸出文件不斷被創建):

log_path = File.join(custom_log_path, 'My Service') 

FileUtils.mkdir_p log_path 
log_file_path = File.join(log_path, "MyService_#{current_date_time_formatted}.log") 
logger = File.open(log_file_path, "a+") 

if defined?(PADRINO_ENV) && PADRINO_ENV == 'production' 
    $stdout.reopen(logger) 
    $stderr.reopen(logger) 
end 

任何幫助非常感謝!

+0

你是否在'Padrino.before_load做'之前做記錄器配置? – ujifgc

+0

@ujifgc我在'Padrino.before_load做'之前做配置' – shakin

回答

1

你應該能夠做到這一點:

Padrino::Logger::Config[:development][:stream] = logger 
# or 
Padrino::Logger::Config[:production][:stream] = logger 

您已經定義logger後。如果config[:stream]未收到關鍵字,則Padrino::Logger將使用傳遞的任何內容作爲輸出流。

有關Padrino記錄器的更多信息,請查看Padrino相關的核心代碼,尤其是self.setup!https://github.com/padrino/padrino-framework/blob/master/padrino-core/lib/padrino-core/logger.rb

+0

這是行不通的。它仍然會創建stdout日誌文件和我的自定義日誌文件。我曾經看過那個Padrino核心代碼,看起來你所建議的應該可以工作,但由於某些原因,它仍然沒有。 – shakin

+0

其他東西必須創建標準輸出日誌,因爲我在Padrino網站的「sample_blog」應用程序中放置了與上面相同的代碼,它完成了我們期望的操作。它只創建我的自定義日誌文件。 – shakin

+0

我遇到問題的padrino應用程序正在通過Trinidad運行,所以我相信這就是創建stdout日誌文件的原因。我正在做一些測試,並會在獲得結果後立即發佈更新。 – shakin