python logging模块学习

来源:互联网 发布:傲梦青少儿编程官网 编辑:程序博客网 时间:2024/06/03 12:28

logging模块有以下四个概念

1.Loggers提供让应用程序代码直接使用的接口

2.Handlerslog record发送到适当的地方,log recordlogger创建

3.Filters提供一个细粒度的控制,用来决定输出哪些log record

4.Formatters决定了log record最终的输出格式


logging模块的特点

1.是线程安全的

2.logger之间是层级、继承关系

3.logger之间的层次关系作用于程序的全局范围内

Loggers

logger不能直接创建,必须调用logging.getLogger(name)

一个应用程序内的logger之间存在层次关系,由一个root logger,其他的logger都是从root logger继承而来。这种继承关系可以在调用logging.getLogger(name)的时候,通过name指明,例如可以创建foofoo.barfoo.bar.baz三个logger

logger有自己的severity level,通过logger.setLevel()设置,创建logger的时候默认是0

logger.debug()logger.info()logger.warning()logger.error()logger.critical()可以记录不同级别的日志。

 Logger.addFilter(filt),给logger添加一个fileter

 Logger.addHandler(hdlr),给logger添加一个handler

 Logger.filter(record),对一个record应用这个loggerfilter,如果处理成功返回ture

Handlers

handler对象不能直接创建,必须使用内置类创建,例如StreamHandlerFileHandler

 Handler.setLevel(lvl),低于lvllogging消息将不会被记录

 Handler.addFilter(filt),给handler添加filter

Formatter

logging.Formatter(fmt=None, datefmt=None),创建一个Formatter对象,fmt是要转换的格式,datafmt是时间的格式。fmt的值参考LogRecord Attributes

Filter

可以被HandlersLoggers用来实施比level更为复杂的控制。

Filters可以更改传递给它们的logrecord,例如增加一些属性,或按照Formatter格式输出。

基础Filter class只允许在logger层级中某一点之下的event通过。例如,一个filter类以‘A.B’初始化,会允许被这些logger记录的事件通过:‘A.B,A.B.C,A.B.C.D,A.B.D’,但是不允许‘A.BB,B.A.B’。如果是以空字符初始化,那么所有的event都能通过。

使用logging.Filter(name='')实例化一个filter对象。


 下面是一个在程序里面使用两个logger分别记录日志到不同输出的例子

import logginglogger = logging.getLogger('simple_example')logger.setLevel(logging.DEBUG)# create file handler which logs even debug messagesfh = logging.FileHandler('spam.log')fh.setLevel(logging.DEBUG)# create console handler with a higher log levelch = logging.StreamHandler()ch.setLevel(logging.ERROR)# create formatter and add it to the handlersformatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')ch.setFormatter(formatter)fh.setFormatter(formatter)# add the handlers to loggerlogger.addHandler(ch)logger.addHandler(fh)# 'application' codelogger.debug('debug message')logger.info('info message')logger.warn('warn message')logger.error('error message')logger.critical('critical message')


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕肚子上有妊娠纹怎么办 怀孕九个月肚子长痱子怎么办 怀孕前体重偏胖怎么办 怀孕打胰岛素血糖控制不好怎么办 孕后期憋的难受怎么办 怀孕6个月不想生怎么办 孕六个月不想要怎么办 怀孕9个月喝酒了怎么办 怀孕8个月喝醉了怎么办 怀孕6个月胃酸烧心怎么办 怀孕7个月胃酸怎么办 怀孕5个月胃酸怎么办 怀孕2个月胃酸怎么办 怀孕六个月胃酸烧心怎么办 孕六个月反胃酸怎么办 怀孕三个月胃酸吐酸水怎么办 孕六个月胃难受怎么办 孕6个月胃酸厉害怎么办 孕妇6个月胃酸怎么办 孕早期胎盘早剥怎么办 孕妇晕车怎么办最有效方法 怀孕了受凉胃疼怎么办 怀孕4个月胎位低怎么办 6个月胎位低怎么办 7个多月了胎位低怎么办 瑜伽按摩球破了怎么办 孕妇吐完胸口疼怎么办 孕25周胸口堵怎么办呢 孕期没做过产检怎么办 宝宝的泪囊堵塞怎么办 瑜伽球塞子丢了怎么办 瑜伽球塞子没了怎么办 练阴瑜伽是想睡怎么办 肠道引流拨断了怎么办 瑜伽动作做不到位怎么办 胃肠吸收不好一直长不胖怎么办 小孩把泡泡糖吞进肚子怎么办 练习瑜伽又?带硬怎么办 天气太热没有空调怎么办 腹股沟岔气怎么办才能快点好 瑜伽馆不给退卡怎么办