Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何让Rails在日志语句中显示标准的有用信息?_Ruby On Rails_Logging - Fatal编程技术网

Ruby on rails 如何让Rails在日志语句中显示标准的有用信息?

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

我刚接触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 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将其进一步简化

我在日志中需要的东西:

  • 时间戳
  • 严重性
  • 首选主机进程(用于连接多个日志文件)
不过,有一些不错的选择,您可以看看:

  • :一个功能强大的记录器,我使用过几次,但没有很好的记录。也不确定是否仍在维护
  • 最近我一直在使用它,它的功能稍逊,但需要较少的配置才能开箱即用,而默认设置完美地满足了我的需要(自定义字符串选项就是最后的修饰)

在Rails 4中,所有模式(生产模式除外)的默认记录器为
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)部分,因为它非常无用。除非有人有更好的主意。