logging.NullHandler 怎么在Python中使用

这篇文章将为大家详细讲解有关logging.NullHandler 怎么在Python中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

logging.NullHandler 怎么在Python中使用

frompeeweeimportModel,CharField,DateTimeField,IntegerField
frompeewee_mssqlimportMssqlDatabase
db=MssqlDatabase(database='test',host='.',user='sa',password='sa')
classBaseModel(Model):
classMeta:
database=db
classPerson(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()

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

importlogging
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 改个名字,看看还有日志输出不。

关于logging.NullHandler 怎么在Python中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-03-26 01:50:24
收藏
分享
海报
0 条评论
165
上一篇:war和jar包怎么在springboot中使用 下一篇:怎么在python中使用pip安装第三方库
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码