4

問題は単純です。CherryPy が、呼び出された特定の公開されたメソッド/API のアクセス ログをログに記録しないようにします。

基本的に、この API が呼び出されると、URL のクエリ文字列には非常に機密性の高いパラメータがいくつかあり、漏洩するとセキュリティが危険にさらされる可能性があります。当然、これは /GET 要求であり、残念ながら、外部サービスからこの Web サーバーへのリダイレクト (302) であるため、パラメーターを渡すことができる唯一の方法です。

URL をログに記録しない場合は、それも目的を果たします。

では、アクセス ログのロギング メッセージを API や URL などでフィルタリングする方法はありますか?

助けてくれてありがとう。

4

1 に答える 1

7

cherrypy はloggingデフォルトで Python の標準モジュールを使用するため、カスタム フィルターを追加するだけで済みます。/fooこの例では、パス プレフィックスとして次のGET リクエストを無視します。

import logging

class IgnoreURLFilter(logging.Filter):
    # simple example of log message filtering

    def __init__(self, ignore):
        self.ignore = 'GET /' + ignore

    def filter(self, record):
        return self.ignore not in record.getMessage()

app = cherrypy.tree.mount( YourApplication() )
app.log.access_log.addFilter( IgnoreURLFilter('foo') )
cherrypy.engine.start()
于 2012-09-10T05:25:59.503 に答える