logging 模块

一、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')

 

原文地址:https://www.cnblogs.com/skyliao/p/9512145.html