Python开发之日志记录模块:logging(4)

日志事件发生事件的毫秒部分。logging.basicConfig()中用了参数datefmt,将会去掉asctime中产生的毫秒部分,可以用这个加上

 

所以,结合上表中的内容,我们可以实现让每一条日志记录输出事件发生时间、事件发生位置、日志级别、事件内容等信息。

现在,我们来给刚才的日志添加一些输出,例如每条日志输出日志时间、日志级别、所在模块名、函数名、行号等信息,并指定时间输出格式,最后把日志输出到当前目录下的.log文件中。代码如下:

import logging fmt = '%(asctime)s , %(levelname)s , %(filename)s %(funcName)s line %(lineno)s , %(message)s' datefmt = '%Y-%m-%d %H:%M:%S %a' logging.basicConfig(level=logging.DEBUG, format=fmt, datefmt=datefmt, filename=".log") logging.debug('debug') logging.info('info') logging.warn('warn') logging.error('error') logging.critical('critical')

运行上述代码后,控制台不会再有输出了,但当前目录下的.log文件会写入一下内容:

2019-03-28 16:34:08 Thu , DEBUG , log_test.py <module> line 8 , debug

2019-03-28 16:34:08 Thu , INFO , log_test.py <module> line 9 , info

2019-03-28 16:34:08 Thu , WARNING , log_test.py <module> line 10 , warn

2019-03-28 16:34:08 Thu , ERROR , log_test.py <module> line 11 , error

2019-03-28 16:34:08 Thu , CRITICAL , log_test.py <module> line 12 , critical

3.2 记录日志之logging四大组件

logging四大组件是logging日志记录的高级用法。四大组件包括Logger、Handelr、Filter、Formater,且都是以类的形式来使用。logging四大组件协同工作流如下如所示:

Python开发之日志记录模块:logging

各组件功能如下:

组件名称

 

对应类名

 

功能描述

 

日志器

 

Logger

 

用于提供日志接口,常用于配置和发送日志消息

 

处理器

 

Handler

 

用于写入日志并输出到指定位置,例如控制台、文件或网络位置等

 

过滤器

 

Filter

 

对日志记录进行进一步过滤,输出符合条件的日志记录

 

格式器

 

Formatter

 

配置日志记录的最终输出格式

 

(1)日志器:Logger

日志器Logger以工厂化的形式返回一个Logger类实例。一般而言,大多使用下面的方法获得Logger类实例:

logging.getLogger(name)

属性name是为Logger实例指定的名称,如果使用同一个名称进行实例化,则实际上只是将后面实例对象名指向前面的同名Logger实例。在使用logging模块时,系统会自动实例化一个名为root的日志器(根日志器),当未指定name属性时,事实上就是将变量名指向跟日志器

另外,Logger实例具有层级继承的特点,层级之间已“.”连接,例如:“a.b”,“a.b.c”,a是父日志器,b是子日志器,在未对子日志器进行配置情况下,子日志器默认继承父日志器的配置,对子日志器重新配置不会影响父日志器。这一点很重要,在多模块中记录日子是可以使用这一特性,我们在下文代码中实践这一特性。根日志器是所有日志器的默认父日志器。

Logger类还有以下的常用方法:

logger.setLevel() :设置日志器处理日志信息的最低级别

logger.addHandler():为该logger对象添加一个handler对象

logger.removeHandler():为该logger对象添加移除一个handler对象

logger.addFilter():为该logger对象添加一个filter对象

logger.removeFilter():为该logger对象移除一个filter对象

logger.debug(),logger.info(),logger.warning(),logger.error(),logger.critical():创建一个对应等级的日志记录

(2)处理器:Handler

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d642fc980407ebf79378f34feecfa099.html