2012-03-10 8 views
1

私はRubyでスクリプトを書いています。スクリプト の目標は、cmakeプロジェクトのビルドプロセスを自動化することです。 多くのデバッグを追加したいのですが、putsまたは の出力を使用すると、出力は常に表示され、その必要はありません。ruby​​で特定のデバッグ出力を有効にする方法はありますか?

私は my_scriptという--debug $ fooという

ような何かをするために、スクリプトの開発に関連した出力を持っていると思います。事前

答えて

1

おかげであなたはプリントアウトやデバッグメッセージを印刷しないように管理することができ、この

log.level = Logger::DEBUG 

のようなロギングのレベルを設定することによりLogger

を使用することができます。あなたは、出力ストリームを選択することができます

また、それはコンソールであるか、またはあなたがロガーを試してみる必要があります。この

log = Logger.new(STDOUT) 
4

のようなファイルがあります。

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" 

あなただけ印刷されるべきメッセージを決定する1つのライン(すなわち$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 [Logger](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html)レベルは、「FATAL」、「ERROR」、「WARN」 '、' INFO'、 'DEBUG'の3つです。レベルを 'INFO'に上げると、デバッグメッセージは得られません。また、' ERROR'に上げると、エラーや致命的なエラーしか出ません。 –

0

は、それはあなたのdevの助け、あなたの側で優しい小さなログバディであるlog_buddy

この宝石を試してみてください、デバッグ、およびテスト。

関連する問題