Python 单独文件中的Flask审核日志
我很难理解python是如何进行日志记录的,以及如何设置它们以实现我想要的目标 我想要的是,除了我的常规flask日志(记录应用程序错误、信息、api调用等)之外,还有一个单独的自定义日志,只记录非常特定的事件,这些事件不一定与信息或警告之类的级别相关联,它们只是消息,所以我目前拥有的就是这些Python 单独文件中的Flask审核日志,python,logging,flask,Python,Logging,Flask,我很难理解python是如何进行日志记录的,以及如何设置它们以实现我想要的目标 我想要的是,除了我的常规flask日志(记录应用程序错误、信息、api调用等)之外,还有一个单独的自定义日志,只记录非常特定的事件,这些事件不一定与信息或警告之类的级别相关联,它们只是消息,所以我目前拥有的就是这些 # My flask set up file_handler = RotatingFileHandler('upload_service.log') file_handler.setFormatter(F
# My flask set up
file_handler = RotatingFileHandler('upload_service.log')
file_handler.setFormatter(Formatter(
'%(asctime)s %(levelname)s: %(message)s '
'[in %(pathname)s:%(lineno)d]'
))
file_handler.setLevel(logging.INFO)
app.logger.addHandler(file_handler)
这将处理我的常规日志记录,然后在我需要自定义日志记录的地方,我将它放在我的类中
logger = logging.getLogger('audit')
logger.setLevel(logging.DEBUG)
file_handler = RotatingFileHandler('audit.log')
file_handler.setFormatter(Formatter(
'%(asctime)s %(levelname)s: %(message)s '
'[in %(pathname)s:%(lineno)d]'
))
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
对于我的日志记录,我只是这样做
logger.info("You changed something %s", request.headers["X-FORWARDED-FOR"])
这使我能够分离出日志记录,而不会让审计文件被任何常规日志记录所污染。目前,这一切正常,但我看到有很多事情可以通过使用过滤器和flask来完成,以便自动记录诸如IP地址、用户名等内容,而不是像我现在这样手动完成
我想做这样的事
# My flask set up
file_handler = RotatingFileHandler('upload_service.log')
file_handler.setFormatter(Formatter(
'%(asctime)s %(levelname)s: %(message)s '
'[in %(pathname)s:%(lineno)d]'
))
file_handler.setLevel(logging.INFO)
audit_handler = RotatingFileHandler('audit.log')
audit_handler .setFormatter(Formatter(
'%(asctime)s %(levelname)s: %(ip) %(message)s '
'[in %(pathname)s:%(lineno)d]'
))
audit_handler.setLevel(logging.DEBUG)
app.logger.addHandler(file_handler)
app.logger.addHandler(audit_handler)
context_provider = ContextualFilter()
app.logger.addFilter(context_provider)
在我的代码中,我希望能够以某种方式将事件捕获到特定的日志中
current_app.logger.info("This is a regular log")
# Can I get a particular handler here ?
current_app.logger.handlers["audit"].info("This is a special log file")
是否有人有任何策略来处理类似的事情或更改我的日志配置?我已经浏览python日志文档大约一天了,只是没有弄清楚如何处理这个问题 据我所知,您在
Flask
中有特定的路由/端点,这些路由/端点必须使用其他记录器处理程序?例如,/index
-默认记录器处理程序,/order
-附加处理程序.Close。这可能会让我走上正轨。我想要的基本上是一个额外的日志处理程序,我显式地写入它。也许我把它叫做“处理者”是不对的。我只是想要一些我可以在路由之间共享的东西,这些路由记录了与普通日志记录不同的某些数据。你能添加一个路由的例子吗?