将模块记录器配置为flask app logger

时间:2014-04-08 17:40:22

标签: python flask

我的烧瓶应用程序使用一个模块来获取这样的记录器:

import logging
logger = logging.getLogger("XYZ")
...
logger.debug("stuff")

无需修改模块中的任何内容,我是否可以配置flask,以便模块在进行getLogger(" XYZ")调用时将获得瓶子的app.logger?

4 个答案:

答案 0 :(得分:1)

是的,你可以配置它。

默认情况下,烧瓶记录器的名称是您的应用名称,但烧瓶的设置为LOGGER_NAME

答案 1 :(得分:0)

This解决方案对我有用:

import logging

logger = logging.getLogger('werkzeug')
logger.debug('stuff')

默认的Flask配置似乎使用记录器名称werkzeug。添加或更改此记录器的处理程序会改变Flask记录的方式。

PS。:Python 3.5,Flask 0.12.2

答案 2 :(得分:0)

如果要使用已经建立的Flask应用日志实例,那么您要做的就是导入当前应用并为其命名。

初始化 .py

from flask import Flask

my_app = Flask(__name__)
我要在其中使用Flask应用程序记录器的

my_other_module.py

from flask import current_app as my_app

class myClass():
   def __init__(self):
       constructor stuff....

   def my_class_method(self):
      my_app.logger.info("log this message")

答案 3 :(得分:0)

在请求或CLI命令中,可以通过current_app访问Flask记录器。

用法示例:

from flask import current_app, Flask
app = Flask('HelloWorldApp')


@app.route('/')
def hello():
    current_app.logger.info('Hello World!')
    return "Hello World!"


if __name__ == '__main__':
    app.run()