Scrapy 日志初始化分析,实现自定义日志handler和日志着色(2)

存在问题

Scrapy 在 Pycharm 中运行时,日志在终端输出的样式为红色,分析原因为:pycharm 会将 sys.stderr 的内容渲染为红色;

需要知道 scrapy 中的日志如何进行初始化的。


scrapy.utils.log

该模块位于 scrapy/utils/log.py,负责对scrapy框架的日志进行配置

configure_logging

configure_logging 函数负责配置 log,主要做三件事:

  • 将 twisted 的日志使用 python 标准日志库 logging 进行日志输出
# 转发 twisted 的日志到标准库中
observer = twisted_log.PythonLoggingObserver("twisted")
observer.start()

  • 将 DEBUG 级别的日志分配给 Scrapy 的 logger,将 ERROR 级别的日志分配给 Twisted 的 logger
  • 将标准输出变成日志输出(LOG_STDOUT 配置)
if settings.getbool("LOG\_STDOUT"):
    sys.stdout = StreamLogger(logging.getLogger("stdout"))  # type: ignore[assignment]
	# 将标准输出改为 logger

该函数在 install_root_handler 为 True (默认)的情况下会调用 install_scrapy_root_handler


install_scrapy_root_handler

install_scrapy_root_handler 该函数会给 logging.root 添加一个 handler(由 _get_handler 从 settings 中读取配置)

# scrapy/utils/log.py#143
# settings 为从 settings.py 读取的配置信息 
def \_get\_handler(settings: Settings) -> logging.Handler:
    """Return a log handler object according to settings"""
    filename = settings.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值