gpt4 book ai didi

ruby-on-rails - 在使用 Rails 3.2 进行日志记录时,如何记录日志语句出现的文件名和行号?

转载 作者:行者123 更新时间:2023-12-05 08:34:34 24 4
gpt4 key购买 nike

在使用 Rails 3.2 进行日志记录时,我想记录发生日志条目的文件名和行号。

因此,如果在我的 ruby​​ 脚本 customer.rb23 中,我有如下日志:

Rails.logger.debug "Debug message"

我希望日志记录如下内容:

[customer.rb:23] Debug message

这可能吗?

最佳答案

我终于想出了最好的解决方案,它也会影响我的应用程序正在使用的其他 gem 的日志格式如下:

  1. 打开类 Logger::SimpleFormatter 并覆盖方法 call。您可以在初始化文件 (config/initializers) 中执行此操作。
  2. 更改方法 call 以记录来自 caller[5] 的文件和线路。

这是一个对我有用的示例实现:

class Logger::SimpleFormatter
def call(severity, time, progname, msg)
call_details = Kernel.caller[5].gsub(/#{Rails.root}/, '')
call_details.match /(.+):(.+):/
filename = $1
line = $2
length = 40
filename = "#{filename[-length, filename.length]}" if filename.length >= length
filename = filename.rjust(length + 2, '.')
"[#{severity} #{time} #{filename}:#{line}] #{msg}\n"
end
end

在我上面的解决方案中,我还将文件名限制为最后 40 个字符,以避免打印大文件路径。

关于ruby-on-rails - 在使用 Rails 3.2 进行日志记录时,如何记录日志语句出现的文件名和行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339130/

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