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