如何获取当前请求的日志输出的副本?

时间:2018-08-02 12:24:55

标签: ruby-on-rails logging

在Rails 4应用程序中,在控制器动作中,我希望动手操作在当前请求期间创建的所有日志输出。。我特别希望保留 all 日志输出,无论设置了什么级别(即,如果记录器设置为不将:debug写入日志文件,那么我仍然希望拥有日志输出:debug级别给我。

一种解决方案是使用before过滤器对Rails.logger(即Rails.logger.extend(MyLoggerMemoryStoreWrapper))进行猴子补丁,其中该包装器覆盖记录器的#add方法,以收集所有将输出记录在数组中以供最终使用。

但是有更好的方法吗?即,某种方式我可以只配置一个衬里?是否支持级联记录器或Rails中的类似功能?我不能不能更改实际记录的行(即,日志仍将使用Rails.logger.info 'xyz'编写,依此类推)。

1 个答案:

答案 0 :(得分:0)

您一次可以在应用程序设置中配置另一个记录器。然后,记录程序所做的完全在您的控制之内,因此它可以提供clear_buffercontents_of_buffer方法,可以在:debug级别上运行,并且可以选择在该目录中记录消息缓冲,然后将它们传递给第二个记录器(可以将其配置为更高级别,并照常写入文件)。