2012-03-10 3 views
1

Я хочу написать сценарий в рубине. Цель сценария - автоматизировать процесс сборки проекта cmake. Я хочу добавить много отладки, но если я использую puts или , вывод будет всегда видимым, и я не хочу этого.Как включить конкретный вывод отладки в ruby?

Я хочу сделать что-то вроде my_script --debug $ обув

и иметь выход, связанный с развитием сценария.

заранее спасибо

ответ

1

Вы можете использовать Logger

Устанавливая уровень регистрации как этот

log.level = Logger::DEBUG 

можно управлять, чтобы распечатать или не печатать отладочные сообщения.

Также вы можете выбрать выходной поток, это может быть консоль или файл, как этот

log = Logger.new(STDOUT) 
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). Кроме того, вы можете проанализировать параметры командной строки, чтобы установить уровень Logger.

Если вы считаете, что вывод слишком многословным, вы можете переопределить его следующим образом:

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

Итак, можно ли сделать рубин для печати всего сообщений Logger :: INFO, но не Logger :: DEBUG? – terietor

+0

@terietor Yep, уровни [Logger] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) - это «FATAL», «ERROR», «WARN» ',' INFO' и 'DEBUG'. Если вы повышаете уровень до 'INFO', вы не получите отладочные сообщения, и если вы поднимете его на' ERROR', вы получите только ошибки и фатальные ошибки. –

0

Попробуйте этот драгоценный камень log_buddy

Это дружелюбный маленький журнал приятель на вашей стороне, помогая вам Дев отладки и тестирования.

Смежные вопросы