一、logging模块级别及常用函数
默认的level是logging.Warning,低于该级别的就不输出了。级别排序:Critical> Error > Warning > Info > Debug
Logging.Formatter:配置日志的格式,在里面自定义设置日期和时间,输出日志的时候将会按照设置的格式显示内容。
Logging.Logger:为程序提供记录日志的接口;判断日志所处级别,并判断是否要过滤;根据其日志级别将该条日志分发给不同handler
addHandler():添加一个Handler
removeHandler():删除一个Handler
addFilter():添加一个Filter,过滤作用
setLevel():设置级别
setFormatter():设置Formatter
Logging.Handler:Handler基于日志级别对日志进行分发,如设置为WARNING级别的Handler只会处理WARNING及以上级别的日志。
logging.basicConfig: 配置日志级别和日志内容输出格式
help(logging.Formatter):
%(name)s Logger的名字
%(levelno)s 打印日志级别的数值
%(levelname)s 打印日志级别的名称
%(pathname)s 打印当前执行程序路径,相当于sys.argv[0]
%(filename)s 打印当前执行程序名
%(module)s 调用日志输出函数的模块名
%(lineno)d 打印日志的当前行号
%(funcName)s 打印日志的当前函数
%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
%(asctime)s 打印日志创建时间
%(msecs)d Millisecond portion of the creation time
%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数
%(thread)d 打印线程ID
%(threadName)s 打印线程名称
%(process)d 打印日志进程ID
%(message)s 打印日志信息
二、日志输出
1 import logging 2 import os.path 3 import time 4 5 6 logger = logging.getLogger() # 创建一个logger 7 logger.setLevel(logging.INFO) # Log等级总开关 8 9 # 创建一个handler,用于输出日志到console,若只需输出到文件,此两行代码去掉 10 ch = logging.StreamHandler() 11 ch.setLevel(logging.WARNING) # 输出到console的log等级的开关 12 13 # 创建一个handler,用于写入日志文件,若只需输出到console,此六行代码去掉 14 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) 15 log_path = os.path.dirname(__file__) + '/Logs/' 16 log_name = log_path + rq + '.log' 17 logfile = log_name 18 fh = logging.FileHandler(logfile, mode='w') 19 fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关 20 21 # 定义handler的输出格式 22 ch.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需输出到文件,此行代码去掉
23 fh.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需输出到console,此行代码去掉
24 25 # 将logger添加到handler里面 26 logger.addHandler(ch) # 若只需输出到文件,此行代码去掉 27 logger.addHandler(fh) # 若只需输出到console,此行代码去掉 28 29 # 日志内容 30 logger.debug('Debug message') 31 logger.info('Info message') 32 logger.warning('Warning message') 33 logger.error('Error message') 34 logger.critical('Critical message')