Python中l(wèi)ogging.NullHandler 的使用教程
在使用 peewee 框架時(shí),默認(rèn)是不會(huì)出現(xiàn)日志消息的。
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()
我們?cè)谏厦娲a中加上一個(gè)日志的定義:
import logging logger = logging.getLogger('peewee') logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler())
神奇的現(xiàn)象出現(xiàn)了,運(yùn)行程序打出了一行日志:
我們雖然定義了日志,但是并沒(méi)有寫任何的日志,那么這一行日志是哪里來(lái)的呢?
查看 peewee 的源碼,發(fā)現(xiàn)其中有日志的定義:
關(guān)于 logging.NullHandler,網(wǎng)上大多數(shù)的解釋就一句話:該 Handler 實(shí)例會(huì)忽略 error messages,通常被想使用 logging 的 library 開發(fā)者使用來(lái)避免'No handlers could be found for logger XXX'信息的出現(xiàn)。
乍看沒(méi)明白,仔細(xì)一想就明白了,其實(shí)很簡(jiǎn)單。logging.getLogger(name)
方法是使用工廠方法返回一個(gè) logger 實(shí)例,如果名為 name 的 logger 已存在,則直接將其返回。
在 peewee 中,定義了一個(gè)名為“peewee”的 logger,但是只給了一個(gè) NullHandler,我們?cè)诖a中,logger = logging.getLogger('peewee'),
這句實(shí)則就是獲取了 peewee 中定義的 logger,并給它添加了一個(gè) StreamHandler,那自然就可以輸出日志了。不信?給自己代碼中的 logger 改個(gè)名字,看看還有日志輸出不。
我們?cè)趯?library 的時(shí)候,也可以這樣定義一個(gè) NullHandler,具體的實(shí)現(xiàn)就交給調(diào)用的人去決定吧。
總結(jié)
以上所述是小編給大家介紹的Python中l(wèi)ogging.NullHandler 的使用教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- python通過(guò)TimedRotatingFileHandler按時(shí)間切割日志
- 零基礎(chǔ)寫python爬蟲之urllib2中的兩個(gè)重要概念:Openers和Handlers
- python+OpenCV實(shí)現(xiàn)圖像拼接
- 解決pycharm中opencv-python導(dǎo)入cv2后無(wú)法自動(dòng)補(bǔ)全的問(wèn)題(不用作任何文件上的修改)
- python環(huán)境下安裝opencv庫(kù)的方法
- Window系統(tǒng)下Python如何安裝OpenCV庫(kù)
- Python Handler處理器和自定義Opener原理詳解
相關(guān)文章
mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab)
這篇文章主要介紹了mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07教你如何用python開發(fā)一款數(shù)字推盤小游戲
這篇文章主要介紹了教你如何用python開發(fā)一款數(shù)字推盤小游戲,文中有非常詳細(xì)的代碼示例,喜對(duì)歡玩小游戲的或者正在學(xué)習(xí)python小游戲開發(fā)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04親手教你用Python打造一款摸魚倒計(jì)時(shí)界面
前段時(shí)間在微博看到一段摸魚人的倒計(jì)時(shí)模板,感覺很有意思,于是我用了一個(gè)小時(shí)的時(shí)間寫一個(gè)頁(yè)面出來(lái),下面小編把實(shí)現(xiàn)過(guò)程分享給大家,對(duì)Python摸魚倒計(jì)時(shí)界面感興趣的朋友一起看看吧2021-12-12利用pyinstaller或virtualenv將python程序打包詳解
這篇文章主要給大家介紹了利用pyinstaller將python程序打包的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03使用TFRecord存取多個(gè)數(shù)據(jù)案例
今天小編就為大家分享一篇使用TFRecord存取多個(gè)數(shù)據(jù)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python實(shí)現(xiàn)的簡(jiǎn)單文件傳輸服務(wù)器和客戶端
這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單文件傳輸服務(wù)器和客戶端,本文直接給出Server和Client端的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04在VS Code上搭建Python開發(fā)環(huán)境的方法
這篇文章主要介紹了在VS Code上搭建Python開發(fā)環(huán)境的方法,需要的朋友可以參考下2018-04-04python base64 decode incorrect padding錯(cuò)誤解決方法
這篇文章主要介紹了python base64 decode incorrect padding錯(cuò)誤解決方法,本文使用把string補(bǔ)齊等號(hào)的方法解決了這個(gè)錯(cuò)誤,需要的朋友可以參考下2015-01-01pythonfor循環(huán)中range與len區(qū)別
這篇文章主要介紹了pythonfor循環(huán)中range與len區(qū)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定參考價(jià)值,需要的小伙伴可以參考一下2022-06-06