常用模块之logging
logging模块是用来记录日志的
直接上用法:
import logging
#进行基本日志配置
logging.basicConfig(filename = 'access.log', #指定日志文件
format = '%(asctime)s - %(name)s - %(levelname)s - %(moudle)s - %(message)s', #指定日志格式
datefmt = '%Y-%m-%d %H : %M : %S %p' #指定日期格式
level = 10 #指定日志记录级别
)
#日志级别遵循原则:自下而上进行匹配
#debug ——>info——>warning——>error——>critical
logging.debug('调试信息') #10
logging.info('正常信息') #20
logging.warning('警告信息') #30
logging.error('错误信息') #40
logging.critical('严重错误信息') #50
#我们运行以上代码的时候会在文件中显示上述5条日志记录,我们发现了一些问题:
只能在文件中显示日志信息,不能指定字符编码
于是我们进行改进,我们边通过写个小例子来验证:
import logging
#logging模块中包含四种角色,下面一一说明:logger,filter, formatter, handler
#1. logger:负责产生日志信息
logger1 = logging.gerLongger('a message')
#2. filter :负责筛选日志,这里我们不做配置
#3. formatter :控制日志输出格式
formatter1 = logging.Formatter(
fmt = '%(asctime)s:%(name)s:%(levelname)s:%(message)s', #日志格式
datefmt = '%Y - %m - %d %X' #时间格式
)
formatter2=logging.Formatter(
fmt='%(asctime)s:%(message)s',
datefmt='%Y-%m-%d %X'
)# 4. handler :负责日志输出目标
h1=logging.FileHandler(filename='a1.log',encoding='utf-8') #输出至a1.log文件中
h2=logging.FileHandler(filename='a2.log',encoding='utf-8') #输出至a2.log文件中
sm=logging.StreamHandler() #输出到屏幕
# 5. 绑定logger对象与handler
logger1.addHandler(h1)
logger1.addHandler(h2)
logger1.addHandler(sm) #将同一文件绑定三个输出目标,以获得不同的记录格式
#6、绑定handler对象与formatter对象
h1.setFormatter(formatter1)
h2.setFormatter(formatter1)
sm.setFormatter(formatter2)#7、设置日志级别:可以在两个关卡进行设置logger与handler
logger1.setLevel(10)
h1.setLevel(10)
h2.setLevel(10)
sm.setLevel(10)
logger1.info('this is a test message')