如何使用aiohttp Web服务器设置日志记录

问题描述

我有一个网络服务器,我希望能够记录该请求,响应和所花费的时间。

我遇到了这个https://docs.aiohttp.org/en/stable/logging.html,但是当我尝试使用替换日志记录AccessLogger类中的内容时。它失败并显示以下错误:

回溯(最近通话最近): 日志中的文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_log.py”,第233行 self.logger.info(self._log_format%元组(值),extra = extra) AttributeError:类型对象“ AccessLogger”没有属性“ info”

在处理上述异常期间,发生了另一个异常:

回溯(最近通话最近): 开始时,文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_protocol.py” self.log_access(request,resp,loop.time()-现在) 在log_access中的第348行,文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_protocol.py” self.access_logger.log(请求,响应,时间) 在日志中的文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_log.py”,第235行 self.logger.exception(“记录错误”) AttributeError:类型对象“ AccessLogger”没有属性“ exception” 错误:aiohttp.server:未处理的异常 追溯(最近一次通话): 日志中的文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_log.py”,第233行 self.logger.info(self._log_format%元组(值),extra = extra) AttributeError:类型对象“ AccessLogger”没有属性“ info”

在处理上述异常期间,发生了另一个异常:

回溯(最近通话最近): 开始时,文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_protocol.py” self.log_access(request,resp,loop.time()-现在) 在log_access中的第348行,文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_protocol.py” self.access_logger.log(请求,响应,时间) 在日志中的文件“ /home/kay/.local/share/virtualenvs/entity-extractor-BuK_iA9e/lib/python3.8/site-packages/aiohttp/web_log.py”,第235行 self.logger.exception(“记录错误”)

logger.py

from aiohttp.abc import AbstractAccessLogger
class AccessLogger(AbstractAccessLogger):

    def log(self,request,response,time):
        self.logger.info(f'{request.remote} '
                         f'"{request.method} {request.path} '
                         f'done in {time}s: {response.status}')

server.py

from aiohttp import web
from src.api import API
from src.logger import AccessLogger

server = API()
web.run_app(server.app,access_log=AccessLogger)

我的最终目标是使日志也具有字典json格式。如果有办法可以实现这一目标,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)