python--logging使用

0. logging介绍

0.1 日志等级:/debug/info/warning/error/critical,默认是warning,只监控warning以及之上的日志信息

0.2 可以通过自定义设置等级,监控debug/info的日志信息

1. 自定义日志收集器--logging模块默认的收集器对象是root

1.1 创建日志收集器对象:my_log = logging.getLogger('Hyean') ----不传入参数,默认参数就是返回root

1.2 设置收集器等级:my_log.setLevel("DEBUG")----设置等级的时候一定要大写!!,自定义收集器定义的时候,并不能输出debug/info 的日志到控制台,具体往下

1.3 创建一个输出到控制台的输出渠道+绑定到日志收集器:

  1.3.1 创建输出渠道:sh = logging.StreamHandler()---------只有设置输入渠道的输出等级,才能输出想到的等级到控制台上!!

  1.3.2 绑定输出渠道:my_log.addHandler(sh)---绑定输出渠道到收集器上

1.4 创建一个输出到文件的输出渠道+绑定到日志收集器:

  1.4.1 创建文件输出渠道:fh = logging.FileHandler("文件名",encoding)

  1.4.2 绑定文件输出渠道:my_log.addHandler(fh)

1.5 设置日志输出格式

  1.5.1 创建一个输出格式:formatter =logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')---可以自己设定格式

  1.5.2 绑定格式和输出渠道:fh.setFormatter(formatter)

2. 日志轮转器

2.1 按大小轮转

· 导入模块:from logging.handlers import RotatingFileHandler

· 创建输出渠道--按文件输出:

eg: fh = RotatingFileHandler(filename=file_path, mode="a", maxBytes=1024*1024, backupCount=7, encoding="utf-8")
参数:filename--输出文件名, mode='a'--打开文件模式, maxBytes=0--文件大小, backupCount=0--保存的日志文件数量, encoding=None, delay=False

2.2 按时间轮转

· 导入模块:from logging.handlers import TimedRotatingFileHandler

· 创建输出渠道--按文件输出:

eg: fh = TimedRotatingFileHandler(filename=file_path, when='d', interval=1, backupCount=24, encoding="utf-8")

参数:filename--文件名, when='h'--日志轮转时间, interval=1---轮转时间间隔, backupCount=0---保存日志文件数量, encoding=None, delay=False, utc=False, atTime=None

——时间支持:# S - Seconds  # M - Minutes  # H - Hours  # D - Days   W{0-6} - roll over on a certain day; 0 - Monday

厚积而薄发,越努力越幸运!
原文地址:https://www.cnblogs.com/qhy-petrel/p/12145355.html