第四十五节,logging日志模块

时间:2021-07-23 14:26:55

用于便捷记录日志且线程安全的模块

 

单文件日志

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()#关闭打开的日志文件
#
这样就将一个日志数据同时写入两个日志文件,注意:要将日志数据写入几个日志文件,就按照上面操作打开几个日志文件