如何在ruby中启用特定的调试输出?

时间:2012-03-10 19:22:27

标签: ruby debugging

我想在ruby中编写一个脚本。脚本的目标 是自动化cmake项目的构建过程。 我想添加大量的调试,但如果我使用put或 打印输出将始终可见,我不希望这样。

我想做点什么 my_script --debug $ foo

并获得与脚本开发相关的输出。

提前致谢

2 个答案:

答案 0 :(得分:4)

你应该试试Logger。

require 'logger'

$log = Logger.new(STDOUT)
$log.level = Logger::DEBUG

$log.debug "Sample debug message"
$log.info "Sample info message"
$log.error "Sample error message"

您只需更改一行即可决定应打印哪些邮件(即$log.level = Logger::DEBUG)。或者,您可以解析命令行选项以设置记录器级别。

如果您认为输出过于冗长,可以像下面这样重新定义:

class Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp} #{msg}\n"
  end
end

答案 1 :(得分:1)

您可以使用Logger

通过设置此类记录级别

log.level = Logger::DEBUG

您可以设法打印或不打印调试信息。

您也可以选择输出流,它可以是控制台或文件,如

log = Logger.new(STDOUT)