在Python 3中,日志记录在Flask下不起作用

在Python 3中,日志记录在Flask下不起作用,python,flask,tornado,Python,Flask,Tornado,我本来希望控制台打印调试语句,比如“服务器从端口开始…”,但是当我为下面的文件运行python app.py时,没有输出任何内容。我已经将我的应用程序设置为调试模式 import logging from flask import Flask from flask_env import MetaFlaskEnv from flask_restful import Resource, Api from flask_restful import reqparse from tornado.http

我本来希望控制台打印调试语句,比如“服务器从端口开始…”,但是当我为下面的文件运行
python app.py
时,没有输出任何内容。我已经将我的应用程序设置为调试模式

import logging

from flask import Flask
from flask_env import MetaFlaskEnv
from flask_restful import Resource, Api
from flask_restful import reqparse
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.wsgi import WSGIContainer


class Configuration(metaclass=MetaFlaskEnv):
    """
    export PORT=80
    """
    DEBUG = True
    PORT = 5000

LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)

app = Flask(__name__)
app.config.from_object(Configuration)
api = Api(app)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    LOGGER.debug("server starting on port :" + str(app.config["PORT"]))
    HTTP_SERVER = HTTPServer(WSGIContainer(app))
    HTTP_SERVER.listen(port=app.config["PORT"])
    IOLoop.instance().start()

还可以尝试在根记录器上设置日志级别:

logging.getLogger().setLevel(logging.DEBUG)
或者使用处理程序将输出显式重定向到标准输出:

import sys
import logging

root = logging.getLogger()
handler = logging.StreamHandler(sys.stdout))
root.addHandler(handler)

还可以尝试在根记录器上设置日志级别:

logging.getLogger().setLevel(logging.DEBUG)
或者使用处理程序将输出显式重定向到标准输出:

import sys
import logging

root = logging.getLogger()
handler = logging.StreamHandler(sys.stdout))
root.addHandler(handler)
你可以:

  • 记录器创建处理程序
  • 调用
    logging.basicConfig()
  • 第一个选项非常简单

    handler = logging.StreamHandler() 
    LOGGER.addHandler(handler)
    
    logging.basicConfig()
    LOGGER = logging.getLogger(__name__)
    LOGGER.setLevel(logging.DEBUG)
    
    第二个问题需要澄清

    handler = logging.StreamHandler() 
    LOGGER.addHandler(handler)
    
    logging.basicConfig()
    LOGGER = logging.getLogger(__name__)
    LOGGER.setLevel(logging.DEBUG)
    
    由于您尚未提供处理程序,您的记录器将在父记录器中查找该处理程序,以此类推。。。情况是-没有现成的默认处理程序。您必须使用
    basicConfig
    调用提供一些或设置默认值。注意,模块级便利功能(
    logging.info
    logging.debug
    logging.error
    ,…)已经进行了初始化,如果没有处理程序,它们会在内部调用
    basicConfig

    您可以:

  • 记录器创建处理程序
  • 调用
    logging.basicConfig()
  • 第一个选项非常简单

    handler = logging.StreamHandler() 
    LOGGER.addHandler(handler)
    
    logging.basicConfig()
    LOGGER = logging.getLogger(__name__)
    LOGGER.setLevel(logging.DEBUG)
    
    第二个问题需要澄清

    handler = logging.StreamHandler() 
    LOGGER.addHandler(handler)
    
    logging.basicConfig()
    LOGGER = logging.getLogger(__name__)
    LOGGER.setLevel(logging.DEBUG)
    
    由于您尚未提供处理程序,您的记录器将在父记录器中查找该处理程序,以此类推。。。情况是-没有现成的默认处理程序。您必须使用
    basicConfig
    调用提供一些或设置默认值。注意,模块级便利功能(
    logging.info
    logging.debug
    logging.error
    ,…)已经进行了这样的初始化,如果没有处理程序,它们会在内部调用
    basicConfig