Python中logging.NullHandler 的使用教程

作者:丹枫无迹 时间:2023-04-18 14:03:03 

在使用 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 的使用教程网站的支持!

来源:http://www.cnblogs.com/gl1573/p/10037049.html

标签:python,logging
0
投稿

猜你喜欢

  • Python变量定义的简单使用介绍

    2021-08-23 07:35:26
  • 文字链接,怎么办?

    2008-08-04 13:18:00
  • js动态显示当前日期,时间和星期代码

    2007-08-14 12:31:00
  • ECharts框架分段视觉映射在移动端适配

    2024-04-28 09:53:49
  • python 函数中的参数类型

    2022-11-16 10:51:28
  • Javascript的匿名函数

    2008-05-07 13:33:00
  • Numpy中Meshgrid函数基本用法及2种应用场景

    2023-05-11 20:13:21
  • 实例讲解Python的函数闭包使用中应注意的问题

    2022-05-17 23:29:53
  • WEB2.0网页制作标准教程(4)如何调用css样式表

    2007-11-13 13:26:00
  • 网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法

    2023-08-13 00:26:58
  • Python tkinter之ComboBox(下拉框)的使用简介

    2021-11-10 02:40:29
  • Python subprocess模块学习总结

    2022-04-29 02:17:40
  • 详细讲解SQL Server数据库的文件恢复技术

    2009-01-15 12:54:00
  • python实现指定文件夹下的指定文件移动到指定位置

    2023-07-03 08:21:11
  • Python通用验证码识别OCR库之ddddocr验证码识别

    2021-05-16 22:55:00
  • python中的bool数组取反案例

    2023-04-12 07:33:15
  • 如何用python爬取微博热搜数据并保存

    2021-10-21 14:13:38
  • windows下python安装paramiko模块和pycrypto模块(简单三步)

    2021-11-29 01:18:40
  • 对Keras中predict()方法和predict_classes()方法的区别说明

    2022-11-05 09:13:32
  • 基于Python实现视频转字符画动漫小工具

    2022-12-20 04:33:54
  • asp之家 网络编程 m.aspxhome.com