2013-02-19 111 views
2

我的Rails.logger很好用,非常感谢,但我会喜欢它写入STDOUT(也就是说,不要放弃登录到日志文件,而是要“发球台“它输出)。使Rails.logger tee写入标准输出

这可能在Rails 3中吗?

+0

'tail -f $ YOUR_LOG_FILE'有什么问题? – mudasobwa 2013-02-19 09:47:07

回答

-1

底部在您的环境配置添加此

Rails.logger = Logger.new(STDOUT) 
+2

他希望他的记录器写入stdout和日志文件,而不仅仅是标准输出 – ksol 2013-02-19 09:10:11

+0

好。我显然跳过了他的问题的'也'部分。 – jvnill 2013-02-19 09:12:06

+0

这仍然有用 – LetMeSOThat4U 2013-02-20 13:38:10

1

这个简单的委托记录应当(*)做的伎俩:

class MultiLogger 
    def initialize *loggers 
    @loggers = loggers 
    end 

    def method_missing *args, &blk 
    @loggers.each {|l| l.send *args, &blk } 
    end 

    def respond_to_missing? *args 
    @loggers.all? {|l| l.respond_to? *args } 
    end 
end 

Rails.logger = MultiLogger.new Rails.logger, Logger.new($stdout) 

(*)我还没有尝试过

+0

对不起,这不起作用:更多的写入控制台比日志文件 - 在我的情况下,只有sql语句记录,而控制台也包含普通的“puts”和漂亮的打印机(PP.pp) 。虽然我不确定这是否是代码的错误,因为遗留代码与日志记录有很大关系。 – LetMeSOThat4U 2013-02-21 12:13:28

+0

好吧,显然你的记录不是全部都要经过记录器。你没有解释为什么你需要这个功能。你不能只使用外部工具,例如:'tail -f'? – dbenhur 2013-02-21 15:54:29

+0

您可以使用'ObjectSpace#each_object'在非日志记录日志中作弊,以查找所有对您的日志文件开放的'File'对象,并将它们重新打开到管道'| tee logfile'。 – dbenhur 2013-02-21 15:57:17

相关问题