Python中l(wèi)ogging實(shí)例講解-創(chuàng)新互聯(lián)

logging 的基本用法網(wǎng)上很多,這里就不介紹了。在引入正文之前,先來(lái)看一個(gè)需求:

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、微信小程序定制開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

假設(shè)需要將某功能封裝成類庫(kù)供他人使用,如何處理類庫(kù)中的日志?

數(shù)年前在一個(gè) C# 開發(fā)的項(xiàng)目中,我用了這樣的方法:定義一個(gè) logging 基類,所有需要用到日志的類都繼承這個(gè)基類,這個(gè)基類中定義一個(gè) LogHandler 事件,該事件用于實(shí)現(xiàn)具體的記錄日志動(dòng)作,同時(shí)可以通過將類 A 的 LogHandler 委托掛到類 B 的 LogHandler 上,實(shí)現(xiàn)將兩個(gè)類的日志信息添加到一起。

自從看了 python 中 logging 的實(shí)現(xiàn)方式,我發(fā)現(xiàn)我的做法真是弱爆了。

我在之前的博客 Python:logging.NullHandler 的使用 中介紹了 peewee 框架中的日志輸出,簡(jiǎn)單來(lái)說就是 peewee 中定義了一個(gè)名為peewee 的 Logger 并添加了一個(gè) NullHandler,調(diào)用者只需要為其添加具體的 Handler 就可以輸出日志了,非常方便。

Python中l(wèi)ogging實(shí)例講解

假設(shè)我們?cè)谥鞒绦蛑幸灿幸粋€(gè) Logger,調(diào)用 peewee 后,我想將兩個(gè)日志輸出到同一個(gè)日志文件中去。顯然將兩個(gè)日志的 FileHandler 指向同一個(gè)日志文件是不可取的,存在并發(fā)搶占文件的風(fēng)險(xiǎn)。當(dāng)然我們也可以將主程序中的 Logger 名字定為 peewee,但這不僅太 low 了,而且如果再調(diào)用一個(gè)庫(kù),其中也封裝好了一個(gè) Logger,就不好處理了。

樹樁結(jié)構(gòu)的 Logger

Logger 對(duì)象被設(shè)計(jì)為一個(gè)樹形結(jié)構(gòu),它有一個(gè) parent 屬性。logging 中定義了一個(gè)名為 root 的 Logger 作為所有 Logger 的根節(jié)點(diǎn),root 的 parent 屬性為 None。root 是全局的。

當(dāng)調(diào)用

logging.getLogger(name=None)

網(wǎng)站題目:Python中l(wèi)ogging實(shí)例講解-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://muchs.cn/article36/djihsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、手機(jī)網(wǎng)站建設(shè)、域名注冊(cè)網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)