11.logging 日志模块 #Python自带模块
# DEBUG 最详细的日志信息,典型应用场景是 问题诊断
# INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
# WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
# ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
# CRITICAL 当发生严重错误,
# 字段/属性名称 使用格式 描述
# asctime %(asctime)s 将日志的时间构造成可读的形式,默认情况下是‘2016-02-08 12:00:00,123’精确到毫秒
# name %(name)s 所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger
# filename %(filename)s 调用日志输出函数的模块的文件名; pathname的文件名部分,包含文件后缀
# funcName %(funcName)s 由哪个function发出的log, 调用日志输出函数的函数名
# levelname %(levelname)s 日志的最终等级(被filter修改后的)
# message %(message)s 日志信息, 日志记录的文本内容
# lineno %(lineno)d 当前日志的行号, 调用日志输出函数的语句所在的代码行
# levelno %(levelno)s 该日志记录的数字形式的日志级别(10, 20, 30, 40, 50)
# pathname %(pathname)s 完整路径 ,调用日志输出函数的模块的完整路径名,可能没有
# process %(process)s 当前进程, 进程ID。可能没有
# processName %(processName)s 进程名称,Python 3.1新增
# thread %(thread)s 当前线程, 线程ID。可能没有
# threadName %(thread)s 线程名称
# module %(module)s 调用日志输出函数的模块名, filename的名称部分,不包含后缀即不包含文件后缀的文件名
# created %(created)f 当前时间,用UNIX标准的表示时间的浮点数表示; 日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
# relativeCreated %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数; 日志事件发生的时间相对于logging模块加载时间的相对毫秒数
# msecs %(msecs)d 日志事件发生事件的毫秒部分。logging.basicConfig()中用了参数datefmt,将会去掉asctime中产生的毫秒部分,可以用这个加上
(1)模块用法
import logging
# 日法收器 Logger 默认日志收集器 root Logger
# 日志输出桌道 handlers 控制台 console file txt test。log
# 1:定义一个日收集器且还要设置级别 getLogger
my_logger = logging.getLogger("python14")
my_logger.setLevel('DEBUG')
# 2:指定输出渠道还要设置级别 StreamHandLer--控制台 FiLeHandLer 输出指定文件
formatter = logging.Formatter("[%(asctime)s]-[%(name)s]-[%(levelname)s]-[日志信息]:%(message)s")#定义日志格式
ch = logging.StreamHandler() # 控制台渠道
ch.setLevel('INFO') # 输出到控制台的级别
ch.setFormatter(formatter) # 设置日志格式
fh = logging.FileHandler("test.log" , encoding = "utf-8") # 文件渠道
fh.setLevel("INFO") # 输出到文件的级别
fh.setFormatter(formatter) # 设置日志格式
# 3:对接
my_logger.addHandler(ch)
my_logger.addHandler(fh)
my_logger.debug("最详细的日志信息")
my_logger.info("记录关键节点信息")
my_logger.warning("某些不期望的事情发生时记录的信息")
my_logger.error("由于一个更严重的问题导致某些功能不能正常运行时记录的信息")
my_logger.critical("当发生严重错误,导致应用程序不能继续运行时记录的信息")
my_logger.removeHandler(ch)#清除控制台渠道信息
my_logger.removeHandler(fh)#清除文件渠道信息
(2)封装成类,方便以后使用
#--------------------------------------------------------------------------------------------------#