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

最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得。不得不说,有许多博主大牛总结得确实很好。似乎我再写关于logging的博文有些多余,但不写总结又总觉得没掌握。那就写写吧,也方便日后回顾。

 

说说为什么需要添加日志?

为了调试和后期维护方便。也许在开发中没有太大体会,但是如果将软件部署到了生产环境中,一旦出现bug,没有日志,就很难对当时的情况进行追踪,有了日志,就可以根据日志尽可能的对当时的数据环境进行还原,方便debug。甚至,只要日志设计得足够合理,还可以用于后续业务数据分析等。

2 日志等级

为什么需要对日志进行划分等级呢?

当我们出于开发时debug的目的使用日志时,我们自然是想尽可能详尽得记录日志,但是如果部署到生产环境中,这样做就可能因为大量的IO占用服务器资源,所以在生产环境中就只需要记录异常信息、错误情况等就好了。

所以,给日志设置等级,可以方便得、因地制宜控制日志输出。

这里只介绍Python的logging模块的日志等级(当然,其他日志系统的日志等级划分事实上也基本相同)。logging的日志等级包括5个:

日志等级(level)

 

描述

 

DEBUG

 

最详细的日志信息,典型应用场景是 问题诊断

 

INFO

 

信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作

 

WARNING

 

当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的

 

ERROR

 

由于一个更严重的问题导致某些功能不能正常运行时记录的信息

 

CRITICAL

 

当发生严重错误,导致应用程序不能继续运行时记录的信息

 

日志等级从上到下依次提高,当在程序中设定某个日志等级之后,比设定的日志等级低的日志记录将会被忽略,即logging就只会输出大于和等于设定的等级的日志。我们将在下文中通过代码示例证明这一点。

3 记录日志

logging模块提供两种方法记录日志:

(1)通过logging模块提供的模块级函数记录日志;

(2)通过logging模块提供的4大组件记录日志。

3.1 记录日志之logging模块级函数

在logging模块中,分别给出一个模块级别函数与上面说到的日志级别相对应,用于输出对应级别日志记录:

函数

 

说明

 

logging.debug(msg, *args, **kwargs)

 

创建一条严重级别为DEBUG的日志记录

 

logging.info(msg, *args, **kwargs)

 

创建一条严重级别为INFO的日志记录

 

logging.warning(msg, *args, **kwargs)

 

创建一条严重级别为WARNING的日志记录

 

logging.error(msg, *args, **kwargs)

 

创建一条严重级别为ERROR的日志记录

 

logging.critical(msg, *args, **kwargs)

 

创建一条严重级别为CRITICAL的日志记录

 

也有一个函数汇总了上面5个函数的功能:

函数

 

说明

 

logging.log(level, *args, **kwargs)

 

创建一条严重级别为level的日志记录

 

现在可以来尝试使用一下上面的函数了:

import logging logging.debug('debug') logging.info('info') logging.warn('warn') logging.error('error') logging.critical('critical') logging.warn('Today is %s',datetime.date.today())

运行结果如下:

WARNING:root:warn

ERROR:root:error

CRITICAL:root:critical

WARNING:root:Today is 2019-03-28

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

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