阅读背景:

Python课程回顾(day20)

来源:互联网 

常用模块3

一、logging模块

日志模块
import logging

logging.basicConfig(
    filename='a.log',   # 指定文件打印路径,不指定文件名会默认打印到控制台
    filemode='a',       # 默认是a模式,可以不写
    format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
    datefmt='%Y-%m-%d %X %p',  # 定制(asctime)的时间格式
    level=10            # 设置日志的级别,代表当前级别及以上级别都可以打印

)
#  打印格式
# %(asctime)s   %(name)s   %(levelname)s       %(module)s:       %(message)s
#  格式化时间   日志名称     日志的级别     当前使用日志的模块名  日志具体的信息
logging.debug('调试信息')      # 10
logging.info('运行结果')       # 20
logging.warning('一级警告')    # 30       { 不同数字代表不同的级别
logging.error('二级警告')      # 40
logging.critical('三级警告')   # 50

# logging模块的四类对象
# logger  负责产生日志
logger1 = logging.getLogger('')      # 使用getLogger产生一个产生日志的对象


# filter  过滤日志(不常用)


# handler 控制日志打印到文件或是终端
# 可能很多文件都需要用到日志,所以可以在多个文件内打印
fh1 = logging.FileHandler(filename='a1.log', encoding='utf-8')  # 控制文件打印路径
fh2 = logging.FileHandler(filename='a2.log', encoding='utf-8')  # 控制文件打印路径
sh = logging.StreamHandler()  # 控制日志打印到终端


# formatter 控制日志的格式
fmt1 = logging.Formatter(
    fmt='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
    datefmt='%Y-%m-%d %X %p'
)

fmt2 = logging.Formatter(
    fmt='%(asctime)s - %(message)s',
    datefmt='%Y-%m-%d %X %p'
)


# 让logger1对象产生的日志可以分别打印到不同的地方,要让他们绑定关系
logger1.addHandler(fh1)
logger1.addHandler(fh2)     # handler对象
logger1.addHandler(sh)


# 让logger1对象所绑定的handler对象再次绑定打印格式
fh1.setFormatter(fmt1)
fh2.setFormatter(fmt1)
sh.setFormatter(fmt2)


# 日志级别
# 日志级别要必须通过两层关卡(logger1级别,文件级别)才可以正常记录
logger1.setLevel(10)  # 基础级别,可以打印所有级别的信息
fh1.setLevel(20)      # 只处理打印大于等于20级别的信息
fh2.setLevel(30)      # 只处理打印大于等于30级别的信息
sh.setLevel(40)       # 只处理打印大于等于40级别的信息

logger1.warning('调试信息')    # 注意本层级别要 >= logger1的级别


了解:日志继承
import logging

logger1 = logging.getLogger('grandfather')
logger2 = logging.getLogger('grandfather.father')    # 继承关系要在设置文件名时将子集放置父集后
logger3 = logging.getLogger('grandfather.father.son')

sh = logging.StreamHandler()
fmt3 = logging.Formatter(
    fmt='%(asctime)s - %(message)s',
    datefmt='%Y-%m-%d %X %p'
)
sh.setFormatter(fmt3)

logger1.addHandler(sh)
logger2.addHandler(sh)
logger3.addHandler(sh)

logger1.setLevel(10)
logger2.setLevel(10)
logger3.setLevel(10)
sh.setLevel(10)

logger3.debug('----------')   # logger3会将得到的所有信息反继承给logger3的所有父集日志模块
import logging

l



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: