• 常用百宝箱——日志处理


    目录

    前言

    一、logging库

    二、logging日志等级

    三、logging四大组件

    四、封装示例

    总结


    前言

            日志是记录特定时间段或事件的详细信息的文件或记录。它们通过时间戳和关键词或描述符来标识事件或行动。日志可以用于许多目的,例如:故障排除、网络安全、业务分析等等。常见的日志包括操作系统日志、应用程序日志、数据库日志等。日志可以通过软件工具进行分析和汇总,以帮助用户更好地了解系统的运行情况和性能状况,以及发现可能存在的问题和异常情况。

    一、logging库

    logging库是Python官方自带的日志处理模块,它提供了一种灵活、简单但功能强大的方式来记录应用程序的日志信息。使用logging库可以对应用程序的日志信息进行收集、过滤、格式化和输出控制等操作。

    通过logging库可以实现以下功能:

    1. 记录应用程序的日志信息到文件或者控制台。

    2. 根据日志级别过滤输出的日志信息。

    3. 根据配置不同输出不同格式的日志信息。

    4. 根据配置自动轮转日志文件,防止日志文件过大。

    5. 支持多线程和多进程的应用程序。

    6. 可以自定义日志处理器,实现特定的日志处理需求。

    二、logging日志等级

    logging日志等级是Python标准库的一部分,用于在程序中记录和输出信息。日志等级描述了日志的重要性,用于过滤和控制日志输出。以下是Python logging库中的日志等级(按照从低到高的顺序):

    logging日志等级
    日志等级        描述
    DEBUG详细信息,用于调试程序
    INFO普通信息,用于描述程序运行状态
    WARNING警告信息,表示程序可能存在问题但并不严重
    ERROR错误信息,表示程序遇到了不可恢复的错误
    CRITICAL严重错误信息,表示程序遇到了致命的错误

    通常情况下,使用INFO日志等级即可,但碰到调试问题时,可以使用DEBUG来进行详细追踪。而警告、错误和严重错误信息则需要引起重视,及时进行处理。可以通过设置日志等级及过滤器筛选所需日志输出。

    三、logging四大组件

    1. logger:用于记录应用程序中发生的事件,如信息、错误和警告等。它们通常按照严重性级别被分为不同的级别,如debug、info、warning、error和critical。

    2. handler:用于控制何时和如何将记录的事件发送到目标位置,如控制台、文件、数据库或网络等。

    3. formatter:用于指定日志记录的格式,包括时间戳、级别和消息等。

    4. filter:用于控制哪些日志记录将被记录,以及哪些将被忽略。可以基于日志级别、消息内容和来源等条件进行筛选。

    四、封装示例

    下面是一个简单使用logging库输出日志的示例:

    1. import logging
    2. # 创建一个日志对象
    3. logger = logging.getLogger(__name__)
    4. # 设置日志级别
    5. logger.setLevel(logging.INFO)
    6. # 创建一个输出到控制台的处理器
    7. console_handler = logging.StreamHandler()
    8. # 设置日志格式
    9. formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(message)s')
    10. console_handler.setFormatter(formatter)
    11. # 添加处理器到日志对象中
    12. logger.addHandler(console_handler)
    13. # 输出日志
    14. logger.debug('debug message')
    15. logger.info('info message')
    16. logger.warning('warning message')
    17. logger.error('error message')
    18. logger.critical('critical message')

    以上示例代码中,首先创建了一个日志对象,并设置了日志输出的级别为INFO。然后创建了一个输出到控制台的处理器,并且设置了日志输出格式。最后添加处理器到日志对象中并输出日志。

    运行以上代码,可以看到输出了不同级别的日志信息。因为设置了输出级别为INFO,所以只输出INFO及以上级别的日志信息,DEBUG和WARNING级别的日志信息没有被输出。

    总结

    除了logging库,Python还有以下库可以记录日志:

    1. Logbook:一个灵活、强大、易于使用的日志库;

    2. Loguru:易于使用的日志库,支持颜色和可选的Stack Trace;

    3. Sentry:一个全功能的日志记录、错误收集、实时事件监视和警报的平台;

    4. Python自带的syslog模块:可以将日志信息发送到本地syslog守护进程;

    5. Graylog:一个开源的日志管理平台,支持多种输入输出方式。

    这些库都可以提供不同程度的日志记录功能,使用时需要根据实际需求进行选择。

    6adf31c8c5dd4e6a83314f4805b30bc1.jpg

  • 相关阅读:
    软件工程理论与实践 (吕云翔) 第三章 可行性研究及需求分析课后习题及答案
    深度优先搜索
    6月27日云技术研讨会 | 中央集中架构新车型功能和网络测试解决方案
    认识Vue扩展插件
    SVN服务器迁移-Windows
    论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
    洛谷P1223 排队接水
    分享一个完全免费的GPT4站点,gpts也可以用
    ClickHouse技术研究及语法简介
    GNU C中({})表达式的返回值
  • 原文地址:https://blog.csdn.net/BROKEN__Y/article/details/132842213