gpt4 book ai didi

ruby-on-rails - Rails错误处理/记录: Simplified backtrace

转载 作者:行者123 更新时间:2023-12-03 08:30:03 25 4
gpt4 key购买 nike

我正在为Rails应用程序记录系统的错误,以发现所有隐藏的错误。

到目前为止,我已经在ApplicationController上使用rescue_from实现了这一点(请注意,我处于实验阶段,因此仅将结果输出到控制台)

 rescue_from Exception, with: :log_exception

private
def log_exception exception
puts("Exception at #{Time.now.strftime('%d %b %Y, %H:%M')}")
puts exception
puts exception.backtrace.join "\n"
raise exception
end

我遇到的问题是exception.backtrace。它输出一堆看起来像这样的无用的深层跟踪
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activemodel-3.2.13/lib/active_model/attribute_methods.rb:407:in `method_missing'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-3.2.13/lib/active_record/attribute_methods.rb:149:in `method_missing'
/Users/marcoprins/Desktop/Project/tillyoudrop/app/models/order.rb:105:in `cancel!'
/Users/marcoprins/Desktop/Project/tillyoudrop/app/controllers/admin/orders_controller.rb:97:in `cancel'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-3.2.13/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:167:in `process_action'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-3.2.13/lib/action_controller/metal/rendering.rb:10:in `process_action'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:436:in `_run__4209411771832668003__process_action__2626133284113442857__callbacks'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
/Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'

它持续了好几英里。

我希望我的错误日志文件看起来干净且可读,所以我所要的只是本示例的第三行和第四行,或者更确切地说,Rails在错误页面中输出的确切行,(参见图片)告诉我的部分确切地是,在我的代码中是错误的来源。

如何访问这些行? exception对象上是否包含一个属性?

最佳答案

通过模式与您要提取或忽略的文件/目录匹配来拒绝或选择某些行。例如,如果要忽略/gems/中的步骤,则:

exception.backtrace.reject{|l| l =~ %r|\A[^:]*/gems/|}

如果只需要 /app/目录中的步骤,则:
exception.backtrace.select{|l| l =~ %r|\A[^:]*/app/|}

实际上,您应该使用 backtrace_locations而不是 backtrace,它无需使用正则表达式即可直接访问路径,但是暂时 backtrace_locations充满了错误,并且不实用。

关于ruby-on-rails - Rails错误处理/记录: Simplified backtrace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com