aiohttp как войти в журнал доступа?

Я пытаюсь получить базовый регистратор для работы aiohttp, но нет просто сообщений журнала, которые регистрируются. Примечание_ регистрация пользовательских сообщений работает как положено.

async def main_page(request: web.Request):
    return "hello world"

def setup_routes(app):
    app.router.add_get('/', main_page)


async def init(loop):
    # load config from yaml file in current dir
    conf = load_config(str(pathlib.Path('.') / 'async_config.yml'))

    # setup application and extensions
    app = web.Application(loop=loop)

    # setup views and routes
    setup_routes(app)

    host, port = conf['host'], conf['port']

    app['gmt_file'] = _get_gmt_file()

    return app, host, port

    LOG_FORMAT = '%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"'
    log_file = "log.text"
    handler = handlers.TimedRotatingFileHandler(log_file, when='midnight',
                                                backupCount=5)

    handler.setLevel(logging.DEBUG)
    formatter = logging.Formatter(LOG_FORMAT)
    handler.setFormatter(formatter)
    handler.name = "file_log"

    loop = asyncio.get_event_loop()
    app, host, port = loop.run_until_complete(init(loop))

    logging.getLogger("aiohttp").addHandler(handler)

    # todo host ziehen per aiohttp methods, so we are externally visible.
    web.run_app(app, host=host, port=port)

1 ответ

LOG_FORMAT должен быть "%s", если есть.'%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"' является допустимым параметром для .make_handler(access_log_format=...) позвони, а не logging.Formatter,

В качестве первого шага я предлагаю настроить root logger и после этого перейти к журналам ошибок / доступа. Возможно доступ к логу стоит из собственного приватного файла вроде access.log, Для этого вам нужно настроить обработчик для aiohttp.access регистратор, не для верхнего уровня aiohttp,

Просто импортируйте логирование и добавьте

logging.basicConfig(level=logging.DEBUG)

где-то до вашего вызова run_app.

Другие вопросы по тегам