Python 日志记录学习

本文介绍了Python的logging模块,强调了日志在系统中的重要性,并详细讲解了logging模块的使用方式,包括模块级别的函数、四大组件(日志器、处理器、过滤器、格式器)以及日志配置的三种方法。示例展示了如何创建和配置日志,以实现不同级别的日志记录和输出。
摘要由CSDN通过智能技术生成

日志是一个系统的重要组成部分,用来记录用户操作、系统运行状态和错误信息,它的好坏直接影响到系统出现问题时定位的速度,有日志记录,我们可以在服务崩溃的时候很快的通过查看日志来发现问题出现的地方,同样也可以通过对日志的观察和分析,提前发现系统可能存在的风险。

对于简单地脚本程序,出问题的时候只要使用 print 函数打印一下程序的中间结果即可,但也仅仅是对简单的脚本程序有效果。一旦碰到复杂的系统,如果还是只用 print 这种方式的话,会看到大量的无用消息,很难从中找到有用的内容。

Python 的标准日志模块

Python 标准库中提供了 logging 模块,最简单的使用,默认情况下 logging 将日志打印到屏幕终端,我们可以直接导入 logging 模块,然后调用 debug,info,warn,error 和 critical 等函数来记录日志,默认日志的重要性级别为 warning ,重要性级别比 warning 高的日志才会被显示(包括 warning ),重要性级别是用来区分日志的重要程度。

重要性级别如下,DEBUG 到 CRITICAL 越来越高:

日志等级(level) 描述
DEBUG 最详细的日志信息,典型应用场景是 问题诊断
INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

logging模块的使用方式介绍

  • logging模块定义的模块级别的常用函数

    函数 说明
    logging.debug(msg, *args, **kwargs) 创建一条严重级别为DEBUG的日志记录
    logging.info(msg, *args, **kwargs) 创建一条严重级别为INFO的日志记录
    logging.warning(msg, *args, **kwargs) 创建一条严重级别为WARNING的日志记录
    logging.error(msg, *args, **kwargs) 创建一条严重级别为ERROR的日志记录
    logging.critical(msg, *args, **kwargs) 创建一条严重级别为CRITICAL的日志记录
    logging.log(level, *args, **kwargs) 创建一条严重级别为level的日志记录
    logging.basicConfig(**kwargs) 对root logger进行一次性配置

    其中logging.basicConfig(**kwargs)函数用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息,其他几个都是用于记录各个级别日志的函数。

  • logging模块的四大组件

    组件 说明
    loggers 提供应用程序代码直接使用的接口
    handlers 用于将日志记录发送到指定的目的位置
    filters 提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
    formatters 用于控制日志信息的最终输出格式

    说明1: logging模块提供的模块级别的那些函数实际上也是通过这几个组件的相关实现类来记录日志的,只是在创建这些类的实例时设置了一些默认值。

    说明2:简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。

使用logging提供的模块级别的函数记录日志

  1. 最简单的日志输出

    import logging
    
    logging.debug("This is a debug log.")
    logging.info("This is a info log.")
    logging.warning("This is a warning log.")
    logging.error("This is a error log.")
    logging.critical("This is a critical log.")
    # 也可以这样写
    # logging.log(logging.DEBUG, "This is a debug log.")
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值