3. logging 日志模块
1)日志输出(默认打印到终端)
# -*- coding:utf-8 -*-
import logging
logging.basicConfig(
#filename='access.log', #设置打印到文件中,而不往屏幕上的
#格式 时间 日志名称默认是root 日志级别 模块名称 日志信息
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level = 10
)
logging.debug('debug') #10
logging.info('info') #20
logging.warning('warn') #30
logging.error('error') #40
logging.critical('critical') #50
2)日志生及即打印步骤
.1 logger: 产生日志
.2 filter: 过滤,一般不用
.3 Handler: 接收logger传过来的日志,进行日志格式化,可以打印到终端也可以打印到屏幕
.4 Formatter:设置日志格式
.5 为handler绑定日志格式
.6 为logger绑定handler
.7 设置日志级别,可以在2个(logger,Handler)地方设置,但Handler设置的日志级别一定要别logger设置的日志级别高,否则没有意义
#1
logger1 = logging.getLogger('access')
#3
sh = logging.StreamHandler() #打印到终端
fh1 = logging.FileHandler('s1.log',encoding='utf-8')
fh2 = logging.FileHandler('s2.log',encoding='utf-8')
#4
formatter1 = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',)
formatter2 = logging.Formatter(fmt='%(asctime)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p')
formatter3 = logging.Formatter(fmt='%(asctime)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p')
#5
sh.setFormatter(formatter1)
fh1.setFormatter(formatter2)
fh2.setFormatter(formatter3)
#6
logger1.addHandler(sh)
logger1.addHandler(fh1)
logger1.addHandler(fh2)
#7
logger1.setLevel(30)
sh.setLevel(10)
fh1.setLevel(10)
fh2.setLevel(10)
#打印
logger1.debug('debug')
logger1.info('info')
logger1.warning('warning')
logger1.error('error')
logger1.critical('50')
3)日志继承
一般日志继承没有一样,可通过 porpagate =False 来控制是否继承
import logging
logger1=logging.getLogger('root')
logger2=logging.getLogger('root.child1')
logger3=logging.getLogger('root.child1.child2')
sh=logging.StreamHandler() #打印到终端
formatter=logging.Formatter(
fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
)
sh.setFormatter(formatter)
logger1.addHandler(sh)
logger2.addHandler(sh)
logger3.addHandler(sh)
logger1.setLevel(50)
logger1.debug('grandpa)
logger2.debug('father')
logger3.debug('son')