使用pip即可安裝使用
pip install nb_log0)自動轉換print效果,再也不怕有人在專案中隨意print,導致很難找到是從**冒出來的print。
只要import nb_log,專案所有地方的print自動現型並在控制台可點選幾精確跳轉到print的地方。
1)相容性
使用的是python的內建logging封裝的,返回的logger物件的型別是py官方內建日誌的logger型別,相容性強,
保證了第三方各種handlers擴充套件數量多和方便,和一鍵切換現有專案的日誌。
比如logru和logbook這種三方庫,完全重新寫的日誌,
它裡面主要被使用者使用的logger變數型別不是python內建logger型別,
造成logger說擁有的屬性和方法有的不存在或者不一致,這樣的日誌和python內建的經典日誌相容性差,
只能相容(一鍵替換logger型別)一些簡單的debug info warning errror等方法,。
2) 日誌記錄到多個地方
內建了一鍵入參,每個引數是獨立開關,可以把日誌同時記錄到8個常用的地方的任意幾種組合,
包括 控制台 檔案 釘釘 郵件 mongo kafka es 等等 。在第8章介紹實現這種效果的觀察者模式。
3) 日誌命名空間獨立,採用了多例項logger,按日誌命名空間區分。
命名空間獨立意味著每個logger單獨的日誌界別過濾,單獨的控制要記錄到哪些地方。
logger_aa = logmanager('那麼logger_aa.debug('哈哈哈')aa').get_logger_and_add_handlers(10,log_filename='
aa.log')
logger_bb = logmanager('
bb').get_logger_and_add_handlers(30,is_add_stream_handler=false,ding_talk_token='
your_dingding_token')
logger_cc = logmanager('
cc').get_logger_and_add_handlers(10,log_filename='
cc.log
')
將會同時記錄到控制台和檔案aa.log中,只要debug及debug以上級別都會記錄。
logger_bb.warning('嘿嘿嘿')
將只會傳送到釘釘群訊息,並且logger_bb的info debug級別日誌不會被記錄,
非常方便測試除錯然後穩定了調高界別到生產。
logger_cc的日誌會寫在cc.log中,和logger_aa的日誌是不同的檔案。
4) 對內建looging包打了猴子補丁,使日誌永遠不會使用同種handler重覆記錄
使用nb_log,對同一命名空間的日誌,可以無懼反覆新增同型別handler,不會重覆記錄。
5)支援日誌自定義,執行此包後,會自動在你的python專案根目錄中生成nb_log_config.py檔案,按說明修改。
1、pycham中調整設定控制台日誌列印出的顏色
2、設定完成後去掉console彈出的顏色設定
3、自動顯示print且可跳轉
在nb_log_config.py (第一次執行列印日誌會在當前專案的根目錄下自動生成)中進行設定如下:
設定完成後自動跳**
4、實際操作中使用:
實際暫時用不到那麼多功能,也不需要多例項logger,所以取裡面的一次,進行了封裝,就不用在py檔案的裡面每次都例項下
log位址原日誌檔案是寫死的,允許被修改,預設日誌存放路徑,可以在原始碼裡檢視到。
一下封裝,可以再優化:
1、logger名稱可以作為引數傳進來
2、log_path和log_filename可以放在配置檔案裡讀取過來,放在nb_log_config.py裡也是可以
以下封裝只是個人覺得做自動化測試使用比較方便
還有很多別的功能可以檢視get_logger_and_add_handlers方法,或者nb_log的init檔案說明
1引用:from nb_log import
logmanager23
class
nblog:45
def__init__
(self,logger_name):
6 self.logger=logmanager(logger_name).get_logger_and_add_handlers(log_path="
log存放位址
",log_filename="
日誌名稱")
7def
get_log(self):
8return
self.logger910
11if
__name__ == '
__main__':
12 dolog =nblog("
test
").get_log()
13 dolog.debug("
這個是debug日誌")
14 dolog.error("
這個是error日誌")
15 dolog.exception("
這個是error日誌
")
sizeof應用在結構上的情況
請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣求 sizeof mystruct sizeof double sizeof char sizeof int 13 但是當在vc中測試上面結構...
電腦應用 在mac上使用aria2
chrome瀏覽器,aria2gui,chrome裡baiduexporter外掛程式。chrome chrome只需要aria2gui v1.4.1.zip 和 baiduexporter.crx firefox只需要aria2gui v1.4.1.zip 和 baiduexporter mast...
應用在k8s上執行的幾種網路模式
應用部署在k8s上,首先想到的是應用k8s的預設service模式配置。應用通過service向集群內部 clusterip 和集群外部 nodeport 暴露服務。k8s中的其他應用通過kube dns提供的dns解析功能,訪問servicename port即可訪問service後面的pod的服...