logging模块学习笔记:handler对象

handler对象有以下几个,常用的为StreamHandler、FileHandler:

StreamHandler

FileHandler

NullHandler

WatchedFileHandler

RotatingFilehandler

TimedRotatingFilehandler

SocketHandler

DatagramHandler

SysLoghandler

Memoryhandler

HTTPHandler

Handler的三个基础操作:

1、设置输出格式 

   设置输出格式要用到的对象是Formatter,初始化方法

   formater = logging.Formatter(格式)

   handler.setFormatter(formater)

   

 1 import logging
 2 import sys
 3 
 4 l_g = logging.getLogger()
 5 l_g.setLevel(logging.DEBUG)
 6 
 7 s_h = logging.StreamHandler(sys.stderr)
 8 f_h = logging.FileHandler('test.log') #设置文件对象,默认是以追加形式写入
 9 
10 l_g.addHandler(s_h)
11 l_g.addHandler(f_h)
12 formatter = logging.Formatter('%(name)s - %(levelname)s - %(asctime)s - %(message)s') #设置formatter
13 s_h.setFormatter(formatter)
14 f_h.setFormatter(formatter)
15 
16 l_g.debug('debug msg')
17 l_g.info('info msg')
18 l_g.error('error msg')
19 l_g.warn('warn msg')

2、设置输出级别

   如上例,文件日志只记录error级别的,

   f_h.setLevel(logging.ERROR)

3、设置过滤器

  

 1 import logging
 2 import sys
 3 
 4 l_g = logging.getLogger('a.b.c')
 5 l_g.setLevel(logging.DEBUG)
 6 
 7 s_h = logging.StreamHandler(sys.stderr)
 8 f_h = logging.FileHandler('test.log')
 9 
10 l_g.addHandler(s_h)
11 l_g.addHandler(f_h)
12 formatter = logging.Formatter('%(name)s - %(levelname)s - %(asctime)s - %(message)s') #设置formatter
13 s_h.setFormatter(formatter)
14 f_h.setFormatter(formatter)
15 f_h.setLevel(logging.ERROR)
16 filter=logging.Filter('a.b') #设置过滤器
17 s_h.addFilter(filter)
18 l_g.debug('debug msg')
19 l_g.info('info msg')
20 l_g.error('error msg')
21 l_g.warn('warn msg')

s_h 这个流对象增加了一个过滤器,只有符合的才会输出,如果过滤器改为Filter('a.b.d'),则不会输出

原文地址:https://www.cnblogs.com/bjdxy/p/2799525.html