第四十五节,logging日志模块
用于便捷记录日志且线程安全的模块
单文件日志
basicConfig()模块函数
功能:创建日志文件和写日志模式【有参】
使用方法:模块名称.basicConfig(filename="日志文件名称",format="(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容)",datefmt="日期时间格式",level="日志等级")
格式如:logging.basicConfig(filename='log.log',format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',level=logging.WARNING)
内置等级写入函数【有参写入的内容】
critical()模块函数,critical等级写入日志
fatal()模块函数,fatal等级写入日志
error()模块函数,error等级写入日志
warning()模块函数,warning等级写入日志
warn()模块函数,warn等级写入日志
info()模块函数,info等级写入日志
debug()模块函数,debug等级写入日志
等级对照表
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
#!/usr/bin/env python # -*- coding:utf8 -*- import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',#(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容) datefmt='%Y-%m-%d %H:%M:%S %p',#日期时间格式 level=logging.WARNING)#日志等级,日志等级要求大写 # 等级对照表 # CRITICAL = 50 # FATAL = CRITICAL # ERROR = 40 # WARNING = 30 # WARN = WARNING # INFO = 20 # DEBUG = 10 #注意:写入等级大于日志等级,才写入日志数据 # 写入等级,写入日志 logging.critical('sss')#写入日志,写入等级要求小写 logging.fatal("333")#写入日志,写入等级要求小写 logging.error("2222")#写入日志,写入等级要求小写 logging.warning("5555")#写入日志,写入等级要求小写 logging.warn("999")#写入日志,写入等级要求小写 logging.info("598")#写入日志,写入等级要求小写 logging.debug("5646")#写入日志,写入等级要求小写 #log日志写入数据 # 2016-09-06 15:10:38 PM - root - CRITICAL -index: sss # 2016-09-06 15:10:38 PM - root - CRITICAL -index: 333 # 2016-09-06 15:10:38 PM - root - ERROR -index: 2222 # 2016-09-06 15:10:38 PM - root - WARNING -index: 5555 # 2016-09-06 15:10:38 PM - root - WARNING -index: 999 #以上可以看出,写入等级大于日志等级,才写入日志数据
log()模块函数
功能:自定义写入等级,写入日志【有参】
使用方法:模块名称.log(写入等级数,"写入内容")
格式如:logging.log(40,'log')
#!/usr/bin/env python # -*- coding:utf8 -*- import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',#(日期时间),(权限用户),(写入等级),(产生日志文件名称),(日志内容) datefmt='%Y-%m-%d %H:%M:%S %p',#日期时间格式 level=logging.WARNING)#日志等级,日志等级要求大写 # 等级对照表 # CRITICAL = 50 # FATAL = CRITICAL # ERROR = 40 # WARNING = 30 # WARN = WARNING # INFO = 20 # DEBUG = 10 #注意:写入等级大于日志等级,才写入日志数据 # 自定义写入等级,写入日志 logging.log(40,'log')
多文件日志(推荐)
FileHandler()模块函数
功能:打开或创建日志文件【有参】
使用方法:模块名称.FileHandler("文件路径名称","打开模式",encoding='字符编码')
格式如:logging.FileHandler('l1_1.log', 'a', encoding='utf-8')
Formatter()模块函数
功能:创建日志写入格式【有参】
使用方法:模块名称.Formatter(fmt="%(日期和时间)s - %(日志等级名称)s - %(写入等级名称)s -%(产生日志程序名称)s: %(日志内容)s")
格式如:logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")
setFormatter()模块函数
功能:将日志写入格式应用到,打开文件【有参】
使用方法:打开日志文件变量.setFormatter(创建日志写入格式变量)
格式如:file_1_1.setFormatter(fmt)
Logger()模块函数
功能:创建日志等级,注意这个日志等级可以参照等级对照表来设置,要求大写【有参】
使用方法:模块名称.Logger("自定义日志等级名称",level=日志等级参数)
格式如:logging.Logger('s1', level=logging.ERROR)
addHandler()模块函数
功能:将日志等级追加到打开的文件【有参】
使用方法:创建日志等级变量.addHandler(打开日志文件变量)
格式如:logger1.addHandler(file_1_1)
close()模块函数
功能:关闭打开的日志文件【无参】
使用方法:打开日志文件变量.close()
格式如:file_1_1.close()
#!/usr/bin/env python # -*- coding:utf8 -*- import logging #导入模块 # 定义文件1 file_1_1 = logging.FileHandler('l1_1.log', 'a', encoding='utf-8')#以a模式打开或创建日志文件 fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")#创建日志写入格式 file_1_1.setFormatter(fmt)#将日志写入格式应用到,打开文件 # 定义文件2 file_1_2 = logging.FileHandler('l1_2.log', 'a', encoding='utf-8')#以a模式打开或创建日志文件 fmt = logging.Formatter(fmt="%(message)s")#创建日志写入格式 file_1_2.setFormatter(fmt)#将日志写入格式应用到,打开文件 # 定义日志 logger1 = logging.Logger('s1', level=logging.ERROR)#创建日志等级,注意这个日志等级可以参照等级对照表来设置,要求大写 logger1.addHandler(file_1_1)#将日志等级追加到打开的文件 logger1.addHandler(file_1_2)#将日志等级追加到打开的文件 # 写日志 logger1.critical('1111') #写入等级函数写入日志,注意这个写入等级函数参照等级对照表来设置,要求小写,也可以用log()模块函数来自定义等级,参照log()模块函数 file_1_1.close()#关闭打开的日志文件 file_1_2.close()#关闭打开的日志文件 #这样就将一个日志数据同时写入两个日志文件,注意:要将日志数据写入几个日志文件,就按照上面操作打开几个日志文件