溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

logging.NullHandler 怎么在Python中使用

發布時間:2021-03-25 17:36:58 來源:億速云 閱讀:220 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關logging.NullHandler 怎么在Python中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在使用 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 改個名字,看看還有日志輸出不。

關于logging.NullHandler 怎么在Python中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女