日志处理模块logging

logging模块

logging模块用于记录事件,错误,警告和调试信息。

日志记录级别

级别 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

基本配置:

在使用logging模块中的任意函数前,应该首先执行根记录器(root logger)的一些基本配置,根记录器负责管理日志消息的默认行为。

basicConfig([**kwargs])   # 此函数用于配置,应该在进行其他日志记录调用之前进行调用。   

此函数接受以下关键字参数

关键字参数 描述
filename 将日志消息附加到指定文件名的文件
filemode 指定用于打开文件的模式,默认使用模式'a'(附加)
format 用于生成日志消息的格式字符串
datafmt 用于输出日期和时间的格式字符串
level 设定根记录器的级别,级别等于或大于此级别的所有日志消息都将被处理,低于此级别的消息将被静默忽略。
stream 提供打开的文件,用于把日志消息发送到其中,默认的流是sys.stderr,此参数不能与filename参数同时使用。

format中的格式

格式 描述
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(filename)s 执行日志记录调用的源文件的文件名
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)d 执行日志记录调用的行号
%(created)f 执行日志记录时的时间,它的值是time.time()返回的数字
%(asctime)s 执行日志记录调用时的ASCII格式的日期和时间
%(msecs)s 执行日志记录调用时的时间的毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息

示例

import logging   
logging.basicConfig(  
	filename =  "app.log",
	format   =  "%(levelname) - 10s %(asctime)s %(message)s"  
	level    =  logging.INFO
为了发出日志消息,必须获得Logger对象

1、 创建Logger对象

用法:getLogger([logname])   # 不管存在与否,都返回与名称logname相关的Logger实例 

示例:logger = getLogger("default")  

在内部,getLogger()方法使用一块缓存来存放Logger实例及其相关名称,如果程序的其他部分请求名称相同的记录器,就会返回以前创建的实例。

2、 发出日志消息

实例化一个Logger对象取名log

日志记录级别   |   方法   
------------ | ---------
CRITICAL     |	log.critical('message')
ERROR        |   log.error('message')
WARNING      |   log.warning(...)
INFO         |   log.info(...)
DEBUG        |   log.debug(...)

示例

log = logging.getLogger("app")  

# 使用位置格式化的日志消息  
log.critical("Can't connect to %s at port %d, host, port)  

# 使用字典格式化的信息   
params = {
		'host' : 'www.python.org',
		'port' : 80
		}
log.critical("Can't connect to %(host)s at port %(port)d", params)
posted @ 2017-09-20 21:00  云石海涯  阅读(232)  评论(0编辑  收藏  举报