16.6. logging

logging提供实现了可扩展的日志系统。

16.6.1. logging.Logger

propagate: 如果此属性的计算结果为true,除了附加到此记录器的任何处理程序外,记录到此记录程序的事件将传递给更高级别(祖先)记录程序的处理程序。
setLevel: 设置日志级别
isEnabledFor:指示是否将由此记录器处理严重性级别为lvl的消息。 此方法首先检查由logging.disable(lvl)设置的模块级别级别,然后检查记录器的有效级别
getEffectiveLevel: 获取当前日志级别
getChild: 根据后缀确定,返回日志器
debug: 输出debug信息
info: 输出info信息
warning:输出警告信息
error:输出error信息
critical:输出critical级别信息
log: 输出指定级别的信息
exception:输出异常信息
addFilter: 添加过滤器
filter: 应用过滤器
addHandler: 添加处理方法
removeHandler: 移除handler
findCaller: 找到调用者源文件名字和行号
handler: 处理记录
makeRecode: 工厂方法
hasHandlers: 是否有Handler

日志级别

级别

数值

描述

CRITICAL

50

严重

ERROR

40

错误

WARNING

30

警告

INFO

20

信息

DEBUG

10

调试

NOTSET

0

不设置

16.6.2. logging.Handler

__init__:   初始化
createLock: 初始化线程锁
acquire:    需要使用createLock创建线程锁
release:    释放
setLevel:  设置级别
setFormatter: 设置格式
addFilter:  添加过滤器
removeFilter: 移除过滤器
filter: 应用过滤器
flush: 确保日志记录输出被刷新
close: 关闭
handler: 根据可能已添加到处理程序的过滤器,有条件地发出指定的日志记录
hanglerError: 错误
format: 对记录进行格式
emit: 做任何事情来实际记录指定的日志记录。 此版本旨在由子类实现,因此引发NotImplementedError。

16.6.3. logging.Formatter

format: 格式化记录
formatTime: 格式化记录使用特定的日期格式
formatException: 格式化异常信息
formatStack: 格式化堆栈信息

16.6.4. logging.Filter

filter: 过滤特定日志

16.6.5. logging.LogRecord

这个对象接受很多参数,如下
name:   名字
level:  日志级别
pathname: 路径名
lineno:     行号
msg:        消息内容
args:      参数信息
exc_info:   异常信息
func:       调用的方法
sinfo:      堆栈信息

日志记录属性

16.6.6. 简单使用

In [1]: import logging

In [2]: FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
...: logging.basicConfig(format=FORMAT)
...: d = {'clientip': '192.168.0.1', 'user': 'zhaojiedi'}
...: logger = logging.getLogger('tcpserver')
...: logger.warning('Protocol problem: %s', 'connection reset', extra=d)
...:
2018-05-13 13:59:54,626 192.168.0.1 zhaojiedi  Protocol problem: connection reset