python Log篇(Logging)

python Log篇(Logging)

一、Logging环境

python 中Logging库是标准库,不需要安装哦,哈哈哈,不过要保证Python版本3.2以上哦,直接用起来吧

二、我们先了解一下Logging都有哪些信息等级

日志等级(level)描述
DEBUG全部的日志详细,比如用于问题诊断
INFO正常信息,比如预设预期结果的确认
WARNING警告信息,比如电脑内存不足
ERROR错误信息,比如配置日志记录系统时出现错误
CRITICAL严重的错误信息,比如系统奔溃的错误信息
日志内容(level)描述
debug不设置权限
info打印 info, warning, error, critical 级别的日志
warning打印 warning, error, critical 级别的日志
error打印 error, critical 级别的日志
critical打印 critical 级别

等级越高,内容就越少
日志级别等级排序: critical > error > warning > info > debug

三、文件格式化,

Handler(处理器)是用来指定日志消息该如何处理的组件。它负责接收Logger对象传递过来的日志消息,并将其输出到特定的目标,例如文件、控制台、网络等。
常见的Handler处理器:

StreamHandler: 从 Handler 继承而来,将日志消息从控制台输出到流对象
FileHandler:从 StreamHandler 继承而来,将日志消息写入到指定文件中。
RotatingFileHandler: 从 FileHandler 继承而来,当日志文件达到一定大小后,会自动切割日志文件,生成新的日志文件。
TimedRotatingFileHandler:从 FileHandler 继承而来,按照时间周期来切割日志文件,例如每天生成一个新的日志文件。
SocketHandler:从 Handler 继承而来,通过网络将日志消息发送到远程服务器。
SMTPHandler:从 Handler 继承而来,通过邮件将日志消息发送给指定的收件人。

a. StreamHandler

日志文件的路径和名称。如果不设置此参数,将默认输出到控制台。

SH = logging.StreamHandler()

b. FileHandler

filename:日志文件的路径和名称。如果不设置此参数,将默认输出到控制台。

FH = FileHandler(filename="app.log")

c. RotatingFileHandler

filename:日志文件的路径和名称。如果不设置此参数,将默认输出到控制台。
maxBytes:文件大小,以字节设置,1024字节=1Kb,10241024=1Mb,10241024*100=100Mb
backupCount:保留的日志文件个数,超过设置熟练,会自动替换最开始的文件

FH = logging.handlers.RotatingFileHandler(filename="app.log", maxBytes=1024, backupCount=5)

d. TimedRotatingFileHandler

filename:日志文件的路径和名称。如果不设置此参数,将默认输出到控制台。
when:时间间隔,“S”(秒),“M”(分钟),“H”(小时),“D”(天),“W0”-“W6”(周一到周日),“midnight”(每天凌晨)。
interval:切割时间间隔的数量。
backupCount:保留的日志文件个数。

FH = TimedRotatingFileHandler(filename="app.log", when="D", interval=1, backupCount=7)

四、日志格式化,让我们显示我们想要显示的数据

Formatter(日志格式)用于定义日志消息的输出格式。在Python的logging模块中,我们可以通过设置Formatter来自定义日志消息的格式,包括日期、时间、级别、消息内容等。

格式描述
%(name)sLogger的名字
%(levelno)s数字形式的日志级别
%(levelname)s文本形式的日志级别
%(pathname)s调用日志输出函数的模块的完整路径名,可能没有
%(filename)s调用日志输出函数的模块的文件名
%(module)s调用日志输出函数的模块名
%(funcName)s调用日志输出函数的函数名
%(lineno)d调用日志输出函数的语句所在的代码行
%(created)f当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d线程ID
%(threadName)s线程名
%(process)d进程ID
%(message)s用户输出的消息

五、Logging 示例

请不要实例化Logging日志的输出,不然可能会出现双重的log等情况,

import logging
import logging.handlers

def AddLog(msg):
	# 创建Logger对象
	logger = logging.getLogger("My_logger")
	
	# 设置日志等级
	logger .setLevel(logging.DEBUG)
	
	# 创建一个控制台处理器
	SH = logging.StreamHandler()
	
	# 创建一个文件处理器
	# 将日志信息输出到`app.log`,设置每个文件大小最大为1024字节也就是1kb,设置, 最多保留5个备份文件
	FH = logging.handlers.RotatingFileHandler("app.log", maxBytes=1024, backupCount=5)
	
	# Formatter日志格式化
	formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(module)s - %(message)s")
	
	SH.setFormatter(formatter)
	FH.setFormatter(formatter)
	
	# 将处理器添加到Logger对象中
	logger.addHandler(SH)
	logger.addHandler(FH)
	
	# 记录一条调试信息
	logger.debug("This is a DEBUG message")
	
	# 记录一条一般信息(一般使用这个就行)
	logger.info("This is a info message")
	logger.info(msg)
	
	# 记录一条警告信息
	logger.warning("This is a warning message")
	
	# 记录一条错误信息
	logger.error("This is a error message")
	
	logger.removeHandler(SH)
	logger.removeHandler(FH)

AddLog("Add info message")

如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值