这是一个两部分问题,但可能有相同的答案.
第一部分:在我们的应用程序中,一个特定的控制器受到了很多打击- 以至于我们希望将它记录在与所有其他请求分开的文件中.设置FoosController.logger不是我正在寻找的,因为请求会运行一些具有其logger对象的lib文件和活动记录对象,rails会在将控制权交给相关控制器之前记录一些信息.
第二部分:我们在根application_controller.rb中包含了一个全局的前置过滤器,它在大多数控制器的大多数操作之前运行.这个before_filter在日志中非常冗长,并且是将所有日志信息发送到单独文件的候选者.此过滤器之前还会调用libs和ActiveRecord代码,并使用它们对记录器的引用.
一种可能的解决方案是将单个控制器作为自己的独立应用程序运行.我还没有尝试过,因为它与app的内部结合在一起.这种方法对before_filter也无济于事.
有没有什么好的解决方案可以在rails应用程序中进行更细粒度的日志记录?
谢谢!
对于第一部分,我 建议创建您自己的记录器类(可能继承自 ruby 记录器 (1)),让记录器过滤掉请求 url,并根据该日志记录到特定文件。
对于第二部分, 最简单的解决方案是为这些方法使用单独的记录器。您只需调用 method_logger.debug “您的消息”,而不是 logger.debug “您的消息”。
创建自己的记录器很简单,只需使用 ruby 记录器类 (1) 即可。以下代码创建一个记录器,用于记录到 Rails 应用程序的日志目录中的 my_method.log 文件。
method_logger = Logger.new(Rails.root.join('logs','my_method.log')
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令写入日志,您应该对它很熟悉,因为 Rails 也使用 Ruby 记录器。
method_logger.debug "your debug message here"
Run Code Online (Sandbox Code Playgroud)
(1)http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |