1、root logger以及logger斧子关系 http://www.pythonclub.org/modules/logging
#coding=utf-8 __author__ = 'nerrissaniu' import logging # 设置root logger r = logging.getLogger() ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') ch.setFormatter(formatter) r.addHandler(ch) # 创建一个logger作为父亲 p = logging.getLogger('foo') p.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(message)s') ch.setFormatter(formatter) p.addHandler(ch) # 创建一个孩子logger c = logging.getLogger('foo.bar') c.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(message)s') ch.setFormatter(formatter) c.addHandler(ch) c.debug('foo')
输出:
foo
2016-08-08 17:58:09,006 - foo
2016-08-08 17:58:09,006 - DEBUG - foo
2、StreamHandler和FileHandler
3、Handler.setLevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略
4、TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]]) http://www.361way.com/python-logging-timedrotating/5043.html
filename 是输出日志文件名的前缀
when 是一个字符串的定义如下:
- “S”: Seconds
- “M”: Minutes
- “H”: Hours
- “D”: Days
- “W”: Week day (0=Monday)
- “midnight”: Roll over at midnight
interval 是指等待多少个单位when的时间后,Logger会自动重建文件,当然,这个文件的创建取决于filename+suffix,若这个文件跟之前的文件有重名,则会自动覆盖掉以前的文件,所以有些情况suffix要定义的不能因为when而重复。
backupCount 是保留日志个数。默认的0是不会自动删除掉日志。若设10,则在文件的创建过程中库会判断是否有超过这个10,若超过,则会从最先创建的开始删除。