精通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​​模块都能够满足我们的需求。通过合理的配置,可以确保日志信息的可靠记录与有效管理,为爬虫的稳健运行提供支持。希望本篇博客能帮助你建立一个结构合理、易于管理的日志系统,让你的爬虫项目更加稳固。

相关推荐
bzmK1DTbd7 小时前
Git版本控制:Java项目中的分支管理与合并策略
java·开发语言·git
许长安7 小时前
RPC 同步调用基本使用方法:基于官方 RouteGuide 示例
c++·经验分享·笔记·rpc
Rust研习社7 小时前
为什么 Rust 没有空指针?
开发语言·后端·rust
kyriewen117 小时前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
其实防守也摸鱼9 小时前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
砚底藏山河9 小时前
Python量化开发:2026最佳实时股票数据API接口推荐与对比
开发语言·windows·python
AlunYegeer10 小时前
JAVA,以后端的视角理解前端。在全栈的路上迈出第一步。
java·开发语言·前端
浅念-10 小时前
刷穿LeetCode:BFS 解决 Flood Fill 算法
数据结构·c++·算法·leetcode·职场和发展·bfs·宽度优先
hixiong12311 小时前
C# OpenvinoSharp使用DINOv2模型进行图像相似度计算
开发语言·c#
DFT计算杂谈11 小时前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化