【问题标题】:logger.debug vs puts in Rails debugging?logger.debug vs 放入 Rails 调试?
【发布时间】:2014-03-13 17:44:24
【问题描述】:

我曾经使用puts 'text' 来查看我的代码流程。我决定不这样做,而是使用logger.debug 'text'

但是,我在运行 rails 的终端中没有看到任何文本输出。我在这里错过了什么?

【问题讨论】:

    标签: ruby-on-rails logging


    【解决方案1】:

    使用logger.debug 而不是puts 绝对是正确的方向,因为puts 更适合命令行应用程序。

    Rails.logger.debug,或简而言之logger.debug 将参数文本写入日志文件。默认情况下,此日志文件是特定于环境的。如果您当前在development 环境中运行rails,那么正在使用的日志文件是log/development.log

    如果您打开文件log/development.log,您会在其中找到调试文本text。要查看写入文件时的日志输出,您可以在新终端中使用tail 命令(如果您使用的是 unix 系统),并将当前工作目录作为您的 rails 应用程序根目录:

    $ tail -f log/development.log 
    

    【讨论】:

      【解决方案2】:

      快速回答:调试应用程序的正确方法是将其打印到日志中(尽量避免使用 puts 'your message' 的脚本,而是使用 Rails.logger.info "your message" 作为最佳实践。

      说明:根据您的环境配置(生产/暂存/开发/测试),您有 4 种类型的记录器,它们位于 /logs。例如,如果您正在调试 RAILS_ENV=test rails s -p 5000,您会在 <yourApplicationPath>/log/test.log 中找到它

      可用的日志级别有::debug, :info, :warn, :error, :fatal,:unknown,分别对应从 0 到 5 的日志级别编号。

      要写入当前日志,请使用控制器、模型或邮件程序中的 logger.(debug|info|warn|error|fatal|unknown) 方法:

      Rails.logger.debug "Person attributes hash: #{@person.attributes.inspect}"
      Rails.logger.info "Processing the request..."
      Rails.logger.fatal "Terminating application, raised unrecoverable error!!!"
      

      通过这种方式,您可以 grep 和过滤正确的级别,并将一些逻辑插入到您的调试过程中。阅读 railsdocumentation 了解更多详情:

      【讨论】:

        【解决方案3】:

        logger.debug 'text' 会将文本记录在环境记录器文件中。如果您在development 环境中,那么您可以在log/development.log 中看到日志。

        要在控制台上查看日志, 例如:在开发环境中你可以更新config/environments/development.rb文件如下:

        config.logger = Logger.new(STDOUT)
        config.logger.level = Logger::DEBUG  ## set the appropriate log level like DEBUG, INFO, WARN, ERROR, FATAL
        

        或者

        你可以像 Vee 建议的那样直接从环境日志文件中读取

         tail -f log/development.log 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          • 2020-07-31
          • 2020-09-11
          • 1970-01-01
          • 1970-01-01
          • 2015-12-08
          • 1970-01-01
          相关资源
          最近更新 更多