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

相关推荐
MC皮蛋侠客5 小时前
Google Test 单元测试指南
c++·单元测试·google test
方也_arkling6 小时前
【Java-Day08】static / final / 枚举
java·开发语言
艾莉丝努力练剑6 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
风吹夏回6 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei116 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1126 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding7 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋97 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
xiaoshuaishuai87 小时前
C# 内存管理与资源泄漏
开发语言·c#
lsx2024067 小时前
SVN 检出操作
开发语言