python使用nb_log模塊捕獲日志的方法
一、調(diào)研日志模塊
我想寫一個(gè)日志模塊,首選是python內(nèi)置的logging模塊,接著查找外部的第三方模塊,一眼看到我們中國(guó)人寫的模塊nb_log。估計(jì)是”牛逼的日志“,這不得不說(shuō)相當(dāng)”嚴(yán)謹(jǐn)“。倒也符合我的口味,pypi的地址如下:
??????nb-log · PyPIvery sharp color display,monkey patch bulitin print and high-performance multiprocess safe roating file handler,other handlers includeing dintalk ,email,kafka,elastic and so on
https://pypi.org/project/nb-log/
怎么說(shuō)呢?模塊介紹的全文相當(dāng)口水話,看起來(lái)相當(dāng)業(yè)余,吹牛成分極大,但非常符合我的口味!物以類聚大概說(shuō)的就是這事,不信你看該官方描述(只是冰山一角):
?
?文章中還有許多對(duì)比,比如將其他模塊或者一些博客文章直接拉出來(lái)槍斃,看起來(lái)極其囂張,哪個(gè)中槍就不說(shuō)了,反正很符合我的口味!現(xiàn)在就按照”官方文檔“去使用吧!
二、nb_log模塊的使用
1、安裝方式
pip install nb_log
如下圖,安裝過(guò)程中還有些安裝不成功的提示,不過(guò)最后萬(wàn)事大吉:
?2、自動(dòng)跳轉(zhuǎn)功能
如圖所示,對(duì)print()也會(huì)進(jìn)行跳轉(zhuǎn),因?yàn)樽髡呦矚g日志,不喜歡print()。
import nb_log print("我是 nb_log !!!")
?3、屏幕流日志效果
print("導(dǎo)入nb_log前,我print很普通") from nb_log import get_logger print("導(dǎo)入nb_log后,我print牛逼了 !!!") logger = get_logger('lalala') logger.debug("我叫debug") logger.info("我叫info") logger.warning("我叫warning") logger.error("我叫error") logger.critical("我叫critical")
4、將日志寫入文件
?未避免錯(cuò)誤,修改如下:
from multiprocessing import Process from nb_log import LogManager, get_logger # 指定log_filename不為None 就自動(dòng)寫入文件了,并且默認(rèn)使用的是多進(jìn)程安全的切割方式的filehandler。 # 默認(rèn)都添加了控制臺(tái)日志,如果不想要控制臺(tái)日志,設(shè)置is_add_stream_handler=False # 為了保持方法入場(chǎng)數(shù)量少,具體的切割大小和備份文件個(gè)數(shù)有默認(rèn)值, # 如果需要修改切割大小和文件數(shù)量,在當(dāng)前python項(xiàng)目根目錄自動(dòng)生成的nb_log_config.py文件中指定。 # logger = LogManager('ha').get_logger_and_add_handlers(is_add_stream_handler=True, # log_filename='ha.log') # get_logger這個(gè)和上面一句一樣。但LogManager不只有g(shù)et_logger_and_add_handlers一個(gè)公有方法。 logger = get_logger(name="all_log", is_add_stream_handler=True, log_filename='ha.log') def f(): for i in range(10): logger.debug('測(cè)試文件寫入性能,在滿足 1.多進(jìn)程運(yùn)行 2.按大小自動(dòng)切割備份 3切割備份瞬間不出錯(cuò)' '這3個(gè)條件的前提下,驗(yàn)證這是不是python史上文件寫入速度遙遙領(lǐng)先 性能最強(qiáng)的python logging handler') if __name__ == '__main__': [Process(target=f).start() for _ in range(10)]
運(yùn)行之后,不太清楚文件去了哪里,嘗試通過(guò)文件系統(tǒng)查找當(dāng)前工程,也沒(méi)有找到。從整個(gè)模塊的使用來(lái)看,認(rèn)為可能很牛逼,但無(wú)論是文檔還是程序本身非常不規(guī)范!
查找全局才發(fā)現(xiàn)原來(lái)日志寫到了這里:
?我猜測(cè)這個(gè)函數(shù)應(yīng)該有路徑輸入,于是打了path,便可定義了,如下:
logger = get_logger(name="all_log", is_add_stream_handler=True, log_path="./", log_filename='ha.log')
5、總結(jié)
(1)模塊能用,可能也好用,但建議先了解logging再使用
(2)個(gè)人維護(hù),是否靠譜另說(shuō),但文檔還不足夠,也不規(guī)范,目前的版本是:nb-log 6.4
到此這篇關(guān)于python使用nb_log模塊捕獲日志的方法的文章就介紹到這了,更多相關(guān)python?nb_log模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于python?win32setpixel?api?實(shí)現(xiàn)計(jì)算機(jī)圖形學(xué)相關(guān)操作(推薦)
這篇文章主要介紹了基于python?win32setpixel?api?實(shí)現(xiàn)計(jì)算機(jī)圖形學(xué)相關(guān)操作,這次的主要分為2個(gè)主要模塊,一個(gè)是實(shí)現(xiàn)畫線,畫圓的算法,還有填充的算法,以及裁剪的算法,需要的朋友可以參考下2021-12-12淺談python標(biāo)準(zhǔn)庫(kù)--functools.partial
這篇文章主要介紹了python標(biāo)準(zhǔn)庫(kù)--functools.partial,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Python PyWebIO實(shí)現(xiàn)網(wǎng)頁(yè)版數(shù)據(jù)查詢器
PyWebIO提供了一系列命令式的交互函數(shù)來(lái)在瀏覽器上獲取用戶輸入和進(jìn)行輸出,將瀏覽器變成了一個(gè)“富文本終端”,可以用于構(gòu)建簡(jiǎn)單的Web應(yīng)用或基于瀏覽器的GUI應(yīng)用。本文將利用PyWebIO制作一個(gè)網(wǎng)頁(yè)版的數(shù)據(jù)查詢器,感興趣的可以學(xué)習(xí)一下2021-12-12python中三種高階函數(shù)(map,reduce,filter)詳解
在Python中,函數(shù)其實(shí)也是一種數(shù)據(jù)類型,今天重點(diǎn)給大家介紹python中三種高階函數(shù)(map,reduce,filter)的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-10-10解決Python 中JSONDecodeError: Expecting value:&n
這篇文章主要介紹了解決Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)錯(cuò)誤問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03python腳本爬取字體文件的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了利用python腳本爬取字體文件的實(shí)現(xiàn)方法,文中分享了爬取兩個(gè)不同網(wǎng)站的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04Python用zip函數(shù)同時(shí)遍歷多個(gè)迭代器示例詳解
這篇文章主要給大家進(jìn)行介紹了Python如何用zip函數(shù)同時(shí)遍歷多個(gè)迭代器,文中給出了示例以及原理和注意事項(xiàng),相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11