logger.debug vs放入Rails调试?

时间:2014-03-13 17:44:24

标签: ruby-on-rails logging

我曾经做puts 'text'以查看我的代码流。我决定使用logger.debug 'text'

而不是这样做

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

3 个答案:

答案 0 :(得分:8)

使用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 

答案 1 :(得分:1)

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 

答案 2 :(得分:0)

快速解答:调试应用程序的正确方法是将其打印到日志中(尽量避免脚本执行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并过滤正确的级别,并在调试过程中插入一些逻辑。阅读滑轨documentation以获得更多详细信息: