首页 > 编程语言 >理解日志基础:使用Python进行有效的日志记录

理解日志基础:使用Python进行有效的日志记录

时间:2024-02-05 11:01:30浏览次数:44  
标签:logging 记录 Python handler file 日志 logger

源码分享

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

日志记录是任何软件开发过程中的一个基本组成部分,尤其是在爬虫开发中。有效的日志记录策略可以帮助开发者监控爬虫的行为,诊断问题,以及追踪爬虫的性能。Python的logging模块提供了一套强大的日志记录工具,它可以帮助你轻松地记录信息、警告和错误。在这篇技术博客中,我们将探索如何在Python中使用logging模块,并提供一些代码示例。

为什么要进行日志记录?

日志记录允许您跟踪事件,当一个应用程序运行时,您可以了解它做了什么或在某个时间点发生了什么错误。这对于调试和监控应用程序来说是非常有用的。

Python日志记录简介

Python的logging模块提供了灵活的日志记录系统。与打印语句(print)不同,日志记录允许您通过简单的配置来设置日志级别、日志格式以及输出位置。

基本配置

import logging

# 配置基本的日志记录信息
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(levelname)s - %(message)s')

这里,我们设置了日志级别为DEBUG,这意味着所有级别的日志(DEBUG, INFO, WARNING, ERROR, CRITICAL)都会被记录。format参数定义了记录输出的格式。

日志级别

Python定义了几个日志级别:

  • DEBUG: 详细信息,通常只有在诊断问题时才有用。
  • INFO: 证明事情按预期工作。
  • WARNING: 表示某些尚未出现的问题(例如'磁盘空间低'),或者程序的一些问题。
  • ERROR: 由于更严重的问题,软件已经无法执行一些功能了。
  • CRITICAL: 严重错误,表明程序本身可能无法继续运行。

记录消息

logging.debug("这是一个调试信息")
logging.info("这是一个信息提示")
logging.warning("这是一个警告信息")
logging.error("这是一个错误信息")
logging.critical("这是一个严重的错误信息")

日志记录到文件

# 配置日志记录到文件
logging.basicConfig(filename='example.log', 
                    level=logging.INFO,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

logging.info("这条信息会被记录到文件中")

添加文件处理器

# 创建日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建文件处理器并设置级别为DEBUG
file_handler = logging.FileHandler('my_log.log')
file_handler.setLevel(logging.DEBUG)

# 创建日志记录格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 将格式器添加到处理器
file_handler.setFormatter(formatter)

# 将处理器添加到日志记录器
logger.addHandler(file_handler)

logger.info("这条信息将记录到日志文件")

多个处理器和格式

# 创建一个流处理器和文件处理器
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler('file.log')

# 设置日志记录格式
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 创建日志记录器并添加两个处理器
logger = logging.getLogger('my_application')
logger.setLevel(logging.DEBUG)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)

# 记录一些信息
logger.debug("这是一个调试信息")
logger.info("这是一个信息提示")

结语

遵循最佳的日志记录实践可以在开发过程中节省大量的时间,尤其是在调试和后期维护阶段。使用Python的logging模块可以帮助您创建一个灵活、可配置和易于扩展的日志记录系统。务必根据你的应用程序需求来配置适当的日志记录级别和输出格式,同时确保敏感信息不被记录。以上介绍和代码示例为您提供了一个良好的日志记录基础,可以根据您的具体需求进行调整和扩展。

标签:logging,记录,Python,handler,file,日志,logger
From: https://blog.51cto.com/u_15288375/9601946

相关文章

  • 【教程】Python代码混淆工具,Python源代码保密、加密、混淆
    引言Python作为一种高级脚本语言,便捷的语法和丰富的库使它成为众多开发者的首选。然而,有时候我们希望保护我们的Python源代码,避免被他人轻易获取和篡改。为了实现这一目标,我们可以采取代码混淆的技术手段。本文将介绍Python代码混淆的现状、优化方法和常用工具。正文1.使用pyc......
  • list assign in python
    ListAssignwithdifferentstrategiesinPythonHereisacodeblockdefrun_infer(self,g_blocks:List[TraceBlock],max_o_num:int=THREADS_NUM)->Iterable[B_PAIRS]:self.model.eval()_g_blocks=[*g_blocks]_default_inst=ArmInst(opcod......
  • python import
    pythonimportReferenceworld/│├──africa/│├──__init__.py│└──zimbabwe.py│├──europe/│├──__init__.py│├──greece.py│├──norway.py│└──spain.py│└──__init__.pyinthiscase,ifeverycountryf......
  • [转]gdb源码安装,指定使用的python版本
    转自:https://www.cnblogs.com/shengulong/p/8053370.html gdb调试python的时候,需要根据不同的python版本2.6、2.7、3.x安装相应的gdb;如何指定关联的python版本?下面gdb源码,解压后,进入目录:./configure-h并没有发现--with-python的选项。没有也没有问题,没有也可以自己加:whi......
  • 利用Python进行数据分析 pdf下载
    本书由Pythonpandas项目创始人WesMcKinney亲笔撰写,详细介绍利用Python进行操作、处理、清洗和规整数据等方面的具体细节和基本要点。第2版针对Python3.6进行全面修订和更新,涵盖新版的pandas、NumPy、IPython和Jupyter,并增加大量实际案例,可以帮助你高效解决一系列数据分析问题。......
  • Decorations in Python
    DecorationsinPythonReferences:ref1,ref2,ref3AdecoratorisadesignpatterninPythonthatallowsausertoaddnewfunctionalitytoanexistingobjectwithoutmodifyingitsstructure.FunctionsinPythonarefirst-classcitizens.Thismeansthatt......
  • 「Log」做题记录 2024.1.29-
    \(2024.1.1-2024.1.7\)\(\color{royalblue}{P5903}\)树上\(k\)级祖先模板,长链剖分。\(\color{blueviolet}{CF1009F}\)长链剖分优化DP板子,每次继承重子节点信息,指针处理下下标平移,剩余节点暴力合并,复杂度线性。\(\color{blueviolet}{P5904}\)长链剖分优化DP。设\(f_{i......
  • 深度学习-DNN深度神经网络-反向传播02-python代码实现nn-41
    目录1.举例2.python实现1.举例2.python实现importnumpyasnpfromsklearn.datasetsimportfetch_mldatafromsklearn.utils.extmathimportsafe_sparse_dotdeftrain_y(y_true):y_ohe=np.zeros(10)y_ohe[int(y_true)]=1returny_ohemnist......
  • Python 机器学习 数据集分布可视化
    ​  Python的机器学习项目中,可视化是理解数据、模型和预测结果的重要工具。通过可视化可以观察数据集的分布情况,了解数据的特征和规律,可以评估模型的性能,发现模型的优缺点,分析预测结果,解释模型的预测过程。可视化数据集的分布和预测结果是整个过程中一个重要的步骤。通常可视......
  • 在 rime 里配置自造词的踩坑记录
    本文采用CCBY协议发布。希望能让后人少一些踩坑。假定你的方案为foo。正确步骤:打开foo.schema.yaml,设置translator一项的几个值如下:translator:enable_sentence:trueenable_encoder:truemax_phrase_length:10#可自行改动上面没提到的值随意。打开......