问题很简单,我们希望 CherryPy 不记录被调用的特定公开方法/API 的访问日志。
基本上,当调用此 API 时,URL 的查询字符串中有一些非常敏感的参数,如果泄露,将暴露潜在的安全性。自然这是一个 /GET 请求,不幸的是,这是传递参数的唯一方式,因为它是从外部服务到该 Web 服务器的重定向(302)。
如果它不记录 URL,那也可以达到目的。
那么,有没有一种方法可以通过 API、URL 等过滤访问日志中的日志消息?
在此先感谢您的帮助。
cherrypylogging
默认使用 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()