在Rails 4应用程序中,在控制器动作中,我希望动手操作在当前请求期间创建的所有日志输出。。我特别希望保留 all 日志输出,无论设置了什么级别(即,如果记录器设置为不将:debug
写入日志文件,那么我仍然希望拥有日志输出:debug
级别给我。
一种解决方案是使用before
过滤器对Rails.logger
(即Rails.logger.extend(MyLoggerMemoryStoreWrapper)
)进行猴子补丁,其中该包装器覆盖记录器的#add
方法,以收集所有将输出记录在数组中以供最终使用。
但是有更好的方法吗?即,某种方式我可以只配置一个衬里?是否支持级联记录器或Rails中的类似功能?我不能不能更改实际记录的行(即,日志仍将使用Rails.logger.info 'xyz'
编写,依此类推)。
答案 0 :(得分:0)
您一次可以在应用程序设置中配置另一个记录器。然后,记录程序所做的完全在您的控制之内,因此它可以提供clear_buffer
和contents_of_buffer
方法,可以在:debug
级别上运行,并且可以选择在该目录中记录消息缓冲,然后将它们传递给第二个记录器(可以将其配置为更高级别,并照常写入文件)。