pythonquarthypercorn

How to use logging in Python Quart route handler?


I'm new to hypercorn+uvloop+quart. I'm trying to create following files and print some info/debug log in the route handler but nothing shows up. I have debugged into the route handler and noticed the dog_server.logger.disabled = True. Does anyone know what's the problem? Thanks!

dog_blueprint.py

from quart import Blueprint
import logging

logging.basicConfig(level=logging.DEBUG)

class DogBlueprint(Blueprint):
    logger = None
    app_config = None

    def register(self, app, options, first_registration: bool = False):
        # app.logger.info('DogBlueprint is registering')
        print('Blueprint registering...')
        self.logger = app.logger 
        self.logger.info("Hello")  # This one working fine
        self.app_config = app.config
        super(DogBlueprint, self).register(app, options, first_registration)
        self.logger.info("World")  # This one working fine

route.py

dog_server = DogBlueprint('dog_server', __name__)
logging.basicConfig(level=logging.DEBUG)

@dog_server.route('/score', methods=['POST'])
async def post_handler():
    received = await _fetch_post_body(request)
    dog_server.logger.info(f'Received size: {len(received)}')  # This one does not work
    ... ... 

Solution

  • This is a bug in Hypercorn, see this discussion. I'd avoid 0.11.0 and use 0.10.2 or 0.11.1. (I'm the Hypercorn author).