我正在尝试使aiohttp正常工作,但是没有日志消息被记录下来。注意,记录自定义消息的工作符合预期。
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)推荐答案
LOG_FORMAT 应该为%s。 '%a%l%u%t%r%s%b%{Referrer} i%{User-Agent} i'是 .make_handler(access_log_format = ...)调用的有效参数,而不是 logging.Formatter 的有效参数。
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.
第一步,我建议设置root logger,然后转到错误/访问日志。 也许值得拥有私人文件的访问日志,例如 access.log 。为此,您需要为 aiohttp.access 记录器设置处理程序,而不是为顶级 aiohttp 设置处理程序。
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.
更多推荐
aiohttp如何记录访问日志?
发布评论