python logging模块学习
来源:互联网 发布:傲梦青少儿编程官网 编辑:程序博客网 时间:2024/06/03 12:28
logging模块有以下四个概念
1.Loggers提供让应用程序代码直接使用的接口
2.Handlers把log record发送到适当的地方,log record由logger创建
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指明,例如可以创建foo,foo.bar,foo.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应用这个logger的filter,如果处理成功返回ture
Handlers
handler对象不能直接创建,必须使用内置类创建,例如StreamHandler,FileHandler。
Handler.setLevel(lvl),低于lvl的logging消息将不会被记录
Handler.addFilter(filt),给handler添加filter
Formatter
logging.Formatter(fmt=None, datefmt=None),创建一个Formatter对象,fmt是要转换的格式,datafmt是时间的格式。fmt的值参考LogRecord Attributes。
Filter
可以被Handlers和Loggers用来实施比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')
- python logging模块学习
- python logging模块学习
- python logging模块学习
- Python 模块学习 logging
- Python logging模块学习
- python logging模块学习
- python logging模块学习
- python logging模块学习
- python学习:logging模块
- python logging模块学习
- python的logging模块学习
- Python 模块学习 logging(2)
- Python 模块学习 logging(1)
- Python 模块学习 logging(2)
- python logging 模块学习小记
- python日志logging模块学习
- Python 小模块学习--logging
- python logging日志模块学习
- Greenplum学习11--添加节点gpexpand ②(添加一台主机,数据先迁移)(改写节点配置文件)
- Mybatis传多个参数(三种解决方案)个人总结
- 后台启动 VirtualBox 虚拟机(无GUI图形化界面)
- lwip之数据收发流程
- Linux 下的notifier chain 机制的注册和触发讲解
- python logging模块学习
- 相同的知识结构体系
- xmind怎么修改概要格式
- AndroidMainfest.xml详解——<application>
- session的存储方式和配置
- 在Spring Framework 5.0中引入Kotlin支持
- 用material Design主题实现 水波纹效果
- TP文本编辑框
- Android Studio debug调试使用release的签名