精通Python爬虫:掌握日志配置

源码分享

https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tab=BB08J2

在开发Python爬虫时,日志记录是一个不可或缺的特性,它帮助我们捕捉运行时信息、调试代码和监控爬虫的健康状况。合理地配置日志系统是提高爬虫可维护性的关键。本篇技术博客将详细介绍如何在Python爬虫中配置日志系统,并提供详细的代码案例,帮助你构建一个强大、灵活的日志环境。

日志配置概述

Python的​​logging​​模块提供了一个灵活的日志系统,可以通过代码或者配置文件来配置。使用编程方式配置日志比较灵活,可以在运行时动态修改配置;而配置文件方式则更加简洁明了,便于管理和维护。

编程方式配置日志

以下是一个通过代码配置日志系统的例子,我们将配置一个将日志信息输出到控制台和文件的环境。

复制代码
import logging
import logging.handlers

def setup_logger():
    # 创建Logger对象
    logger = logging.getLogger('spider')
    logger.setLevel(logging.DEBUG)  # 设置日志级别

    # 创建一个流处理器Handler,用于输出到控制台
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.WARNING)  # 控制台只输出警告及以上级别的日志

    # 创建一个文件处理器Handler,用于输出到文件
    file_handler = logging.handlers.RotatingFileHandler(
        'spider.log', maxBytes=10*1024*1024, backupCount=5
    )
    file_handler.setLevel(logging.DEBUG)  # 文件记录所有级别的日志

    # 定义日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    console_handler.setFormatter(formatter)
    file_handler.setFormatter(formatter)

    # 将Handler添加到Logger
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

# 调用函数配置Logger
setup_logger()

# 获取Logger
logger = logging.getLogger('spider')
logger.info('Info message')
logger.error('Error message')

配置文件方式配置日志

Python允许使用配置文件(通常是JSON或YAML格式)来配置日志系统。以下是一个使用JSON格式配置文件的例子。

首先,创建一个名为​​logging_config.json​​的配置文件:

复制代码
{
    "version": 1,
    "disable_existing_loggers": false,
    "formatters": {
        "standard": {
            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "WARNING",
            "formatter": "standard",
            "stream": "ext://sys.stdout"
        },
        "file": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "DEBUG",
            "formatter": "standard",
            "filename": "spider.log",
            "maxBytes": 10485760,
            "backupCount": 5
        }
    },
    "loggers": {
        "spider": {
            "level": "DEBUG",
            "handlers": ["console", "file"],
            "propagate": false
        }
    },
    "root": {
        "level": "INFO",
        "handlers": ["console"]
    }
}

然后,加载JSON配置文件配置日志系统:

复制代码
import logging.config
import json

def setup_logging():
    with open('logging_config.json', 'r') as f:
        config = json.load(f)
        logging.config.dictConfig(config)

# 调用函数配置Logger
setup_logging()

# 获取Logger
logger = logging.getLogger('spider')
logger.debug('Debug message')
logger.critical('Critical message')

结语

正确配置日志对于爬虫项目的成功至关重要,它不仅帮助开发者调试程序,而且在生产环境中监控爬虫活动时发挥着关键作用。无论是通过编程方式还是配置文件,强大的Python ​​logging​​模块都能够满足我们的需求。通过合理的配置,可以确保日志信息的可靠记录与有效管理,为爬虫的稳健运行提供支持。希望本篇博客能帮助你建立一个结构合理、易于管理的日志系统,让你的爬虫项目更加稳固。

相关推荐
旖旎夜光24 分钟前
LeetCode 852:山脉数组的峰顶索引(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
程与留1 小时前
05_Qt 核心模块概览——Qt Core、Gui、Widgets、Quick 的职责划分
c++·qt
CRMEB定制开发1 小时前
2026年最值得推荐的10大开源商城系统盘点
开发语言·人工智能·开源·商城系统·小程序商城
buhuizhiyuci1 小时前
【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性
开发语言·c++·qt·gui·图形化
Littlehero_1213 小时前
QT自定义控件之热换站系统(源码开源)
开发语言·qt
meilindehuzi_a3 小时前
Python 基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
caimouse3 小时前
ReactOS 窗口系统分析(5):可见区域与窗口 DC — vis.c + windc.c
c语言·开发语言
OPEN-F3 小时前
Python进阶教程:装饰器与生成器深入
开发语言·python
千里码aicood4 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
_Narcissus_5 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径