1

では、簡単な質問です。「get」または「post」ブロックのいずれかの内部で DataMapper を使用してトランザクションを実行するたびに、次のような出力が得られます...

core.local - - [19/Sep/2012:09:04:54 CEST] "GET /eval_workpiece/state?id=24 HTTP/1.1" 200 4
- -> /eval_workpiece/state?id=24

私の好みには少し冗長すぎます。このフィードバックをオフにすることはできますか?

4

3 に答える 3

2

これは Datamapper のログではなく、WEBrick サーバーによって行われるログであり、デフォルトでこれら 2 つの形式を使用してすべてのリクエストをログに記録します

( Rack::CommonLogger は同じ (または少なくとも非常に類似した) 形式を使用しますが、これも Rack ロギングではないことに注意してください)。

これを停止する最も簡単な方法は、Thin などの独自のログを追加しない別のサーバーに切り替えることです。

引き続き WEBrick を使用したい場合は、Sinatra アプリからオプションを渡す方法を見つける必要があります。現在リリースされている Sinatra gem (1.3.3) では、これを行う簡単な方法はありませんが、現在のマスターでは、:server_optionsSinatra が次に渡す設定を設定できます。したがって、将来的にはこれを行うことができるはずです:

set :server_settings, {:AccessLog => []}

WEBrickを黙らせるために。

当分の間、アプリファイルの最後に次のようなものを追加できます(次のようなものでアプリを起動していると仮定していますruby my_app_file.rb):

disable :run
Sinatra::Application.run! do |server|
  server.config[:AccessLog] = []
end
于 2012-10-31T21:28:22.250 に答える
1

すべてのロギングを遮断するには:

DataMapper.logger = nil

詳細度を変更するには:

DataMapper.logger.set_log(logger, :warn) # where logger is Sinatra's logging object

その他のレベルは:fatal => 7, :error => 6, :warn => 4, :info => 3, :debug => 0( http://rubydoc.info/gems/dm-core/1.1.0/DataMapper/Logger )

于 2012-10-31T19:58:00.570 に答える
1

ActiveSupport で実行している場合は、カーネル拡張機能を使用できます。

quietly { perform_a_noisy_task }

これにより、ブロックの間、STDOUT と SDTERR が /dev/null に一時的にバインドされます。すべての出力を抑制したくない場合があるため、理論的には次のことができます。

with_warnings(:warn) { # or :fatal or :error or :info or :debug
  perform_a_noisy_task
}

適切なメッセージが抑制されます。(注: 私の Padrino/DataMapper 環境で使用すると一見無関係なエラーが発生したため、「理論的に」と言います。YMMV.)with_warnings

于 2013-03-11T22:55:11.260 に答える