python之logging模块

本文介绍了Python的logging模块,用于替代print进行调试信息输出,并详细阐述了其日志级别,包括debug、info、warning、error和critical。通过实例展示了如何设置日志收集器和处理器,以及使用Formatter定制日志输出格式。文中还提供了一个实用的日志类模板和配置文件示例。
摘要由CSDN通过智能技术生成

首先介绍一下:
logging --是python自带的一个日志模块

它的作用主要有两个。

1、代替print,可以把大部分想要调试的信息打印出来或者是输出到指定的文件。
2、可以对一些输出的调试信息分类做输出,级别控制。

那么它的级别分为:debug/info/warning/error/critical

分别代表的意思:调试、打印、警告、错误、严重错误警告
每一级都是渐渐深入的过程。

运行下面一段代码:

import logging
# 级别控制:# 默认收集的是 warning (包括warning)以上的问题
logging.debug('小小今天很活跃')
logging.info('小小666')
logging.warning('pp')
logging.error('lll')
logging.critical('小夏')

控制台输出的是:

WARNING:root:pp
ERROR:root:lll
CRITICAL:root:小夏

为什么?因为默认收集的是 warning (包括warning)以上的问题
WARNING:root:pp 代表什么意思,即是:级别、日志收集器默认为root、内容

3、写日志需要经过的两个渠道:
Logger 收集日志 debug info error
handdler 输出日志的渠道,指定的文件,还是控制台,一般默认到控制台

import logging

# 定义一个日志收集器 # 如果不设置级别 或者 'python11' 为空,那么它将会默认从warning以上去收集(不包含warning)
my_logger = logging.getLogger('python11')
# 设定级别 注意的是  DEBUG 要大写
my_logger.setLevel('DEBUG')

# 创建我们自己的输出渠道,StreamHandler 输出到控制台
ch = logging.StreamHandler()
ch.setLevel('DEBUG')
# 把收集渠道和输出渠道对接
my_logger.addHandler(ch)

# 收集日志
my_logger.debug('python11期')
my_logger.info('pyton11期,6')
my_logger.error('python11期,最强!')

因为我们日志收集器设定的级别是:DEBUG 还有我们输出渠道定义的也是DEBUG,所有我们采集信息日志是从DEBUG开始采集的。

所以输出到控制台的结果是:

python11期
pyton11期,6
python11期,最强!

4、logging的应用:
(a)

import logging

# 创建一个收集器
my_logging = logging.getLogger('项目名称')
# 定义级别,收集的是DEBUG以上的级别
my_logging.setLevel('DEBUG')
# 定义一个输出到控制台的渠道Stream-->控制台Handler组织
ch = logging.StreamHandler()
# 定义一个输出到文件渠道
fh = logging.FileHandler('fhandler.txt', encoding='utf-8')
# 设置输出控制器的级别 输出的时候包含定义的级别,其中输出到控制台是error以上级别,输出到文本的是debug以上级别
ch.setLevel('ERROR')
fh.setLevel('DEBUG')
# 把收集控制器和输出控制器连接起来 指定到输出渠道
my_logging.addHandler(ch)
my_logging.addHandler(fh)

# 采集信息
my_logging.debug('控制住这条信息debug')
my_logging.info('控制住这条信息info')
my_logging.warning('控制住这条信息warning')
my_logging.error('控制住这条信息error')
my_logging.critical('控制住这条信息critical')

# 关闭日志收集器
my_logging.removeHandler(ch)
my_logging.removeHandler(fh)

输出结果是:
在这里插入图片描述

(b)
formatter:决定日志记录的最终输出格式(不然日志会乱七八糟)Formatter对象定义了最终log信息的顺序,
结构和内容,规定了日志输出按照什么样的格式,默认的时间格式为:%Y-%m-%d %H:%M:%S,下面是 formatter 常用的一些信息
在这里插入图片描述
在这里插入图片描述

import logging
# 创建一个收集器 名称:收到错误级别
my_logging = logging.getLogger('项目')
# 定义级别,收集的是DEBUG以上的级别
my_logging.setLevel('DEBUG')

# 设置输出格式:包括时间、级别、项目名,还有执行文件名等等
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息:%(message)s')

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值