Python中logging.NullHandler 的使用教程

 更新时间:2018年11月29日 16:03:04   作者:丹枫无迹  
这篇文章主要介绍了Python中logging.NullHandler 的使用教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下

在使用 peewee 框架时,默认是不会出现日志消息的。

from peewee import Model, CharField, DateTimeField, IntegerField
from peewee_mssql import MssqlDatabase
db = MssqlDatabase(database='test', host='.', user='sa', password='sa')
class BaseModel(Model):
 class Meta:
  database = db
class Person(BaseModel):
 Name = CharField(verbose_name='姓名', max_length=20)
 Age = IntegerField(verbose_name='年龄')
 Birthday = DateTimeField(verbose_name='生日', null=True)
p = Person(Name='张三', Age='20', Birthday='2018-01-01')
p.save()

我们在上面代码中加上一个日志的定义:

import logging
logger = logging.getLogger('peewee')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())

神奇的现象出现了,运行程序打出了一行日志:

我们虽然定义了日志,但是并没有写任何的日志,那么这一行日志是哪里来的呢?

查看 peewee 的源码,发现其中有日志的定义:

关于 logging.NullHandler,网上大多数的解释就一句话:该 Handler 实例会忽略 error messages,通常被想使用 logging 的 library 开发者使用来避免'No handlers could be found for logger XXX'信息的出现。

乍看没明白,仔细一想就明白了,其实很简单。logging.getLogger(name) 方法是使用工厂方法返回一个 logger 实例,如果名为 name 的 logger 已存在,则直接将其返回。

在 peewee 中,定义了一个名为“peewee”的 logger,但是只给了一个 NullHandler,我们在代码中,logger = logging.getLogger('peewee'),这句实则就是获取了 peewee 中定义的 logger,并给它添加了一个 StreamHandler,那自然就可以输出日志了。不信?给自己代码中的 logger 改个名字,看看还有日志输出不。

我们在写 library 的时候,也可以这样定义一个 NullHandler,具体的实现就交给调用的人去决定吧。

总结

以上所述是小编给大家介绍的Python中logging.NullHandler 的使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • mat矩阵和npy矩阵实现互相转换(python和matlab)

    mat矩阵和npy矩阵实现互相转换(python和matlab)

    这篇文章主要介绍了mat矩阵和npy矩阵实现互相转换(python和matlab),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 教你如何用python开发一款数字推盘小游戏

    教你如何用python开发一款数字推盘小游戏

    这篇文章主要介绍了教你如何用python开发一款数字推盘小游戏,文中有非常详细的代码示例,喜对欢玩小游戏的或者正在学习python小游戏开发的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 亲手教你用Python打造一款摸鱼倒计时界面

    亲手教你用Python打造一款摸鱼倒计时界面

    前段时间在微博看到一段摸鱼人的倒计时模板,感觉很有意思,于是我用了一个小时的时间写一个页面出来,下面小编把实现过程分享给大家,对Python摸鱼倒计时界面感兴趣的朋友一起看看吧
    2021-12-12
  • 利用pyinstaller或virtualenv将python程序打包详解

    利用pyinstaller或virtualenv将python程序打包详解

    这篇文章主要给大家介绍了利用pyinstaller将python程序打包的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 使用TFRecord存取多个数据案例

    使用TFRecord存取多个数据案例

    今天小编就为大家分享一篇使用TFRecord存取多个数据案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python文件时间操作步骤代码详解

    Python文件时间操作步骤代码详解

    这篇文章主要介绍了Python文件时间操作步骤代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python实现的简单文件传输服务器和客户端

    Python实现的简单文件传输服务器和客户端

    这篇文章主要介绍了Python实现的简单文件传输服务器和客户端,本文直接给出Server和Client端的实现代码,需要的朋友可以参考下
    2015-04-04
  • 在VS Code上搭建Python开发环境的方法

    在VS Code上搭建Python开发环境的方法

    这篇文章主要介绍了在VS Code上搭建Python开发环境的方法,需要的朋友可以参考下
    2018-04-04
  • python base64 decode incorrect padding错误解决方法

    python base64 decode incorrect padding错误解决方法

    这篇文章主要介绍了python base64 decode incorrect padding错误解决方法,本文使用把string补齐等号的方法解决了这个错误,需要的朋友可以参考下
    2015-01-01
  • pythonfor循环中range与len区别

    pythonfor循环中range与len区别

    这篇文章主要介绍了pythonfor循环中range与len区别,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下
    2022-06-06

最新评论