python日志(2)——logging

python日志(2)——logging进阶


一、logging的四大组件

名称介绍
Loggers提供应用程序代码直接使用的接口
Handlers处理程序将日志记录(由记录器创建)发送到相应的目标
Filters过滤器提供了更细粒度的工具,用于确定要输出哪些日志记录
Formatters格式化程序指定最终输出中日志记录的布局

1.logger

  logger最常用的操作有类:配置和发生日志信息。

(1)logger=logging.getLogger(name)方法进行初始化,name可以不填。通常logger的名字对应模块名,如聊天模块、数据库模块、验证模块等。
(2) logger.setLevel(logging.DEBUG) 设置级别为debug

2.Handler

  主要方法有两种:StreamHandler 和 FileHandler。(windows下可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上
  通常情况下,在定义Handler后还要做一次setLevel(),原因是:Logger中设置的级别决定它将传递给Handler的消息严重性。每个Handler设置的setLevel()决定了该处理程序将发送哪些消息,但后者是在前者的基础上设置等级的。(如:Logger设置级别为INFO,那Handler设置的级别就只能是INFO自身或之后的级别

3.Formatter

  formatter,定义了最终log信息的顺序,结构和日志内容,(参数在上一篇文章有列举,如%(levelname)s 文本形式的日志级别)
参考格式:‘[%(asctime)s] - [%(name)s] -[%(levelname)s]- %(message)s’, ‘%Y-%m-%d %H:%M:%S’

用代码举例展示:

import logging

# 1.创建一个logger
logger = logging.getLogger('my_log')
logger.setLevel(logging.DEBUG)

# 2.1 创建一个handler,选择StreamHandler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 2.2 创建一个handler,选择FileHandler,用于写入日志文件
fh = logging.FileHandler('3.log')
fh.setLevel(logging.ERROR)

# 3、定义handler的输出格式(formatter)
formatter = logging.Formatter('[%(asctime)s] - [%(name)s] -[%(levelname)s]- %(message)s', '%Y-%m-%d %H:%M:%S')
ch.setFormatter(formatter)
fh.setFormatter(formatter)

# 4、将相应的handler添加到logger对象中
logger.addHandler(ch)
logger.addHandler(fh)

# 输出以下日志内容
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

控制台输出结果(设置等级为DEBUG):

[2023-07-11 10:24:30] - [my_log] -[DEBUG]- debug message
[2023-07-11 10:24:30] - [my_log] -[INFO]- info message
[2023-07-11 10:24:30] - [my_log] -[WARNING]- warn message
[2023-07-11 10:24:30] - [my_log] -[ERROR]- error message
[2023-07-11 10:24:30] - [my_log] -[CRITICAL]- critical message

3.log文件输出结果(设置等级为ERROR):

[2023-07-11 10:24:30] - [my_log] -[ERROR]- error message
[2023-07-11 10:24:30] - [my_log] -[CRITICAL]- critical message

二、输出日志的常用方式

(1)第一种就是上面那种显示创建Logger、Handler和formatter
(2)另一种就是创建配置文件,并使用fileConfig函数读取

代码示例:

import logging
import logging.config
logging.config.fileConfig('logging.conf')

# create logger
logger = logging.getLogger('myExample')

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

配置文件logging.conf

[loggers]
keys=root,myExample

[handlers]
keys=consoleHandler

[formatters]
keys=myFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_myExample]
level=DEBUG
handlers=consoleHandler
qualname=myExample
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=myFormatter
args=(sys.stdout,)

[formatter_myFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

控制台输出:

2023-07-11 10:47:29,732 - myExample - DEBUG - debug message
2023-07-11 10:47:29,733 - myExample - INFO - info message
2023-07-11 10:47:29,733 - myExample - WARNING - warn message
2023-07-11 10:47:29,733 - myExample - ERROR - error message
2023-07-11 10:47:29,733 - myExample - CRITICAL - critical message

总结

参考文章1
参考文章2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要躺平的一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值