Reputation: 10909
I am trying to get a basic logger for aiohttp working, but there are simply no log messages being logged. Note_ logging custom messages works as expected.
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)
Upvotes: 4
Views: 4231
Reputation: 678
Simply import logging and add
logging.basicConfig(level=logging.DEBUG)
somewhere before your run_app call.
Upvotes: 1
Reputation: 17376
LOG_FORMAT
should be "%s" if any.
'%a %l %u %t "%r" %s %b "%{Referrer}i" "%{User-Agent}i"'
is a valid parameter for .make_handler(access_log_format=...)
call, not logging.Formatter
.
As first step I suggest setting up root logger and after that going down to error/access logs.
Perhaps access log worth own private file like access.log
. To achieving this you need to setup a handler for aiohttp.access
logger, not for top-level aiohttp
.
Upvotes: 1