访问 Flask-Restful 资源中的 API 记录器



我目前正在使用 flask-restful (http://flask-restful.readthedocs.io/en/0.3.5/index.html( 将资源部署为端点,我想知道是否有办法从资源类中访问 API 记录器。我已经浏览了文档,找不到合适的答案。

基本上我想这样做:

from flask_restful import Resource 
class SomeEndpoint(Resource):
    def get(self):
        try:
            ... something throws an exception
        except SomeException as se:
            ... send custom message to API logger         <----- Here!
        return response

我所做的是通过资源的构造函数将记录器从 API 传递,如下所示:

App = Flask(__name__)
api = Api(App)
api.add_resource(SomeEndpoint, '/', resource_class_kwargs={'logger': App.logger})

这是访问烧瓶休息资源端点内记录器的最合适方法吗?

多谢

我知道

答案已经选定了,但是有一种稍微不同的方法也有效。

一、导入

from flask import current_app as app

在资源文件中,以及在调用记录器时,执行以下操作:

app.logger.info("This is an info message")

你需要定义 Resource 的构造函数。这里有一个例子:

import logging

class SomeEndpoint(Resource):
    def __init__(self, **kwargs):
        self.logger = kwargs.get('logger')
    def get(self):
        # self.logger - 'logger' from resource_class_kwargs
        return self.logger.name  
api.add_resource(SomeEndpoint, '/', resource_class_kwargs={
    # any logger here...
    'logger': logging.getLogger('my_custom_logger')
})

打开终结点。你会看到my_custom_logger.希望这有帮助。

设置 debug=False 可以暂时解决问题。

但我真的不知道当调试设置为 True 时有什么问题