python logging 不输出控制台_【logging】Python多层级日志输出

1. 简介在应用的开发过程中,我们常常需要去记录应用的状态,事件,结果。而Python最基础的Print很难满足我们的需求,这种情况下我们就需要使用python的另一个标准库:logging。这是一个专门用于记录日志的模块。相对于Print来说,logging提供了日志信息的分级,格式化,过滤等功能。如果在程序中定义了丰富而有条理的log信息,那么可以非常方便的去分析程序的运行状况,在有问题时也能...
摘要由CSDN通过智能技术生成

1. 简介

在应用的开发过程中,我们常常需要去记录应用的状态,事件,结果。而Python最基础的Print很难满足我们的需求,这种情况下我们就需要使用python的另一个标准库:logging。

这是一个专门用于记录日志的模块。相对于Print来说,logging提供了日志信息的分级,格式化,过滤等功能。如果在程序中定义了丰富而有条理的log信息,那么可以非常方便的去分析程序的运行状况,在有问题时也能够方便的去定位问题,分析问题。

以下是具体的一些应用场景。

执行的任务

这项任务的最佳工具

显示控制台输出

print()

报告在程序正常运行期间发生的事件

logging.info()或 logging.debug()

发出有关特定运行时事件的警告

logging.warning()

报告有关特定运行时事件的错误

抛出异常

报告错误但不抛出异常

logging.error(), logging.exception()或 logging.critical()

2. 基础用法

以下是一些logging最基础的使用方法,如果不需要深入的去定制log的话,那么只需要使用最基础的部分即可。

In [1]: import logging

In [2]: logging.info('hello world')

In [3]: logging.warning('good luck')

WARNING:root:good luck

可以看到,logging.info()的日志信息没有被输出,而logging.warning()的日志信息被输出了,这就是因为logging的日志信息分为几个不同的重要性级别,而默认输出的级别则是warning,也就是说,重要性大于等于warning的信息才会被输出。

以下是logging模块中信息的五个级别,重要性从上往下递增。

等级

什么时候使用

DEBUG

详细信息,通常仅在Debug时使用。

INFO

程序正常运行时输出的信息。

WARNING

表示有些预期之外的情况发生,或者在将来可能发生什么情况。程序依然能按照预期运行。

ERROR

因为一些严重的问题,程序的某些功能无法使用了。

CRITICAL

发生了严重的错误,程序已经无法运行。

我们也可以通过设置来设定输出日志的级别:

In [1]: import logging

In [2]: logging.basicConfig(level=logging.DEBUG)

In [3]: logging.info('hello world')

INFO:root:hello world

可以看到,在设定了level参数为logging.DEBUG后,logging.info()的日志信息就正常输出了。

2.1. basicConfig

logging.basicConfig(**kwargs)

通过basicConfig()方法可以为logging做一些简单的配置。此方法可以传递一些关键字参数。

filename

文件名参数,如果指定了这个参数,那么logging会把日志信息输入到指定的文件之中。

import logging

logging.basicConfig(filename='example.log')

logging.warning('Hello world')

filemode

如果指定了filename来输出日志到文件,那么filemode就是打开文件的模式,默认为'a',追加模式。当然也可以设置为'w',则每一次输入都会丢弃掉之前日志文件中的内容。

format

指定输出的log信息的格式。

In [1]: import logging

In [2]: logging.basicConfig(format='%(asctime)s %(message)s')

In [3]: logging.warning('hello world')

2018-07-06 16:28:12,074 hello world

datefmt

如果在format中使用了asctime输出时间,那么可以使用此参数控制输出日期的格式,使用方式与time.strftime()相同。

level

设置输出的日志的级别,只有高出此级别的日志信息才会被输出。

In [1]: import logging

In [2]: logging.basicConfig(level=logging.INFO)

In [3]: logging.info('hi')

INFO:root:hi

In [4]: logging.debug('byebye')

注:需要注意的是,basicConfig()方法是一个一次性的方法,只能用来做简单的配置,多次的调用basicConf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值