Ruby on rails 如何让Rails在日志语句中显示标准的有用信息?
我刚接触Ruby/Rails编程,但仍在摸索。我已经按照教程创建了一个示例web应用程序。很好用。它使用Ruby版本1.9.3和Rails版本4.0.8 但是,我想实现日志记录。因此,我将以下lineq插入到我的一个控制器中:Ruby on rails 如何让Rails在日志语句中显示标准的有用信息?,ruby-on-rails,logging,Ruby On Rails,Logging,我刚接触Ruby/Rails编程,但仍在摸索。我已经按照教程创建了一个示例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 I
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文件实现了所述的解决方案:
class Logger::SimpleFormatter
def call(severity, time, progname, msg)
"[#{severity} #{time} #{caller(0).first.match(/.*:\d+/)[0]}] #{msg}\n"
end
end
但这没什么区别。日志行仍然没有显示,没有任何其他我正在寻找的重要信息。如何解决这个问题?为什么创建我的logger.rb没有任何效果?我真的不明白为什么登录rails是如此“赤裸裸”。rails使用的默认记录器甚至更好,但rails将其进一步简化 我在日志中需要的东西:
- 时间戳
- 严重性
- 首选主机进程(用于连接多个日志文件)
- :一个功能强大的记录器,我使用过几次,但没有很好的记录。也不确定是否仍在维护
- 最近我一直在使用它,它的功能稍逊,但需要较少的配置才能开箱即用,而默认设置完美地满足了我的需要(自定义字符串选项就是最后的修饰)
ActiveSupport::logger::SimpleFormatter
。请参阅此处的文档:
因此,您的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
。我建议使用autentication gems非常简单,只是…user.authenticate(1)此注释不够详细,没有提供任何解释。添加初始值设定项后是否重新启动了服务器?开发服务器不会自动包含初始值设定项更改。是。在添加logger.rb文件后,我重新启动了rails服务器。我还需要文件名和行号。任何诊断为什么我的解决方案不起作用?谢谢!但是,这始终显示行://logger.rb:3。如何更改它,使其显示呼叫线路的文件和行号。除非将文件信息写入消息本身,否则无法轻松获取文件信息,如logger.debug“SomeController:12 message from line 12”
。我会说完全去掉调用方(0)部分,因为它非常无用。除非有人有更好的主意。