我是Ruby / Rails编程的新手,仍然找到了自己的方式。我已按照this教程创建了一个示例Web应用程序。它工作正常。它使用Ruby版本1.9.3和Rails版本4.0.8。
但是我想实现日志记录。所以我将以下lineq插入到我的一个控制器中:
logger.debug "Hello! I'm a DEBUG message"
logger.info "Hello! I'm an INFO message"
这产生了以下日志:
Hello! I'm a DEBUG message
Hello! I'm an INFO message
这不太有帮助。我想在日志输出中看到更多细节。这个日志什么时候创建的?日志级别是多少?这个日志的文件名和行号是多少?我想看到所有这一切。
所以我通过创建一个包含以下内容的文件config / initializers / logger.rb来实现描述here的解决方案:
class Logger::SimpleFormatter
def call(severity, time, progname, msg)
"[#{severity} #{time} #{caller(0).first.match(/.*:\d+/)[0]}] #{msg}\n"
end
end
但它没有任何区别。日志线仍然是裸露的,没有我正在寻找的任何其他基本信息。如何解决这个问题?为什么没有创建我的logger.rb有什么影响?
答案 0 :(得分:1)
在Rails 4中,所有模式的默认记录器(production
除外)都是ActiveSupport::Logger::SimpleFormatter
。请参阅此处的文档:http://guides.rubyonrails.org/configuring.html#rails-general-configuration
因此,您的logger.rb
必须是:
class ActiveSupport::Logger::SimpleFormatter
def call(severity, time, progname, msg)
"[#{severity} #{time} #{caller(0).first.match(/.*:\d+/)[0]}] #{msg}\n"
end
end
请注意,这在生产模式下无效。对于production
,如果需要,您必须自定义Logger::Formatter
。
答案 1 :(得分:0)
我真诚地不明白为什么登录轨道是如此"裸露"。默认的记录器使用轨道甚至更好,但是轨道使其进一步下降。
我在记录时需要的东西:
虽然有一些很好的选择,你可以看看: