4

JSON API サービスとして機能する Sinatra アプリを管理しています。API は、別の Web アプリとモバイル アプリによって使用されます。

Rack::CommonLogger でパスワードなどの機密情報をログから除外したいと考えています。Rails ではこの設定が有効になっていますが、Sinatra でこれを行う方法に関するドキュメントは見つかりませんでした。

4

3 に答える 3

5

次のように、機密メッセージを書き込んで除外するための呼び出しを傍受することができます。

logger = Logger.new("my_common.log")
logger.instance_eval do
  def write(msg)
    self.send(:<<, msg) if !msg.match /SUPER SENSITIVE INFO HERE/
  end
end

次に、ロガーのこのインスタンスを使用するように Rack::CommonLogger を構成します。

config.middleware.use Rack::CommonLogger, logger
于 2013-03-13T13:48:06.027 に答える
0

Sinatra は IOm である STDERR にログを記録しますが、他の人のパスワードを保存したくありません。

module NoTokenLogging
  def write(*args)
    args.first.sub!(/password=\S+/, "password=[FILTERED]")
    super
  end
end
IO.prepend NoTokenLogging
于 2015-03-04T06:41:03.273 に答える