2013-07-09 65 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