我曾经做puts 'text'
以查看我的代码流。我决定使用logger.debug 'text'
。
但是,我没有看到在我运行rails s的终端中输出的任何文本。我在这里缺少什么?
答案 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以获得更多详细信息: