国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python logging日志模塊以及多進程日志詳解

2020-02-22 23:41:25
字體:
來源:轉載
供稿:網友

本篇文章主要對 python logging 的介紹加深理解。更主要是 討論在多進程環境下如何使用logging 來輸出日志, 如何安全地切分日志文件。

1. logging日志模塊介紹

python的logging模塊提供了靈活的標準模塊,使得任何Python程序都可以使用這個第三方模塊來實現日志記錄。python logging 官方文檔

logging框架中主要由四個部分組成:

    Loggers: 可供程序直接調用的接口 Handlers: 決定將日志記錄分配至正確的目的地 Filters: 提供更細粒度的日志是否輸出的判斷 Formatters: 制定最終記錄打印的格式布局

2. logging的組成

loggers

loggers 就是程序可以直接調用的一個日志接口,可以直接向logger寫入日志信息。logger并不是直接實例化使用的,而是通過logging.getLogger(name)來獲取對象,事實上logger對象是單例模式,logging是多線程安全的,也就是無論程序中哪里需要打日志獲取到的logger對象都是同一個。但是不幸的是logger并不支持多進程,這個在后面的章節再解釋,并給出一些解決方案。
【注意】loggers對象是有父子關系的,當沒有父logger對象時它的父對象是root,當擁有父對象時父子關系會被修正。舉個例子logging.getLogger("abc.xyz")會創建兩個logger對象,一個是abc父對象,一個是xyz子對象,同時abc沒有父對象所以它的父對象是root。但是實際上abc是一個占位對象(虛的日志對象),可以沒有handler來處理日志。但是root不是占位對象,如果某一個日志對象打日志時,它的父對象會同時收到日志,所以有些使用者發現創建了一個logger對象時會打兩遍日志,就是因為他創建的logger打了一遍日志,同時root對象也打了一遍日志。

每個logger都有一個日志的級別。logging中定義了如下級別

Level Numeric value
NOTSET 0
DEBUG 10
INFO 20
WARNING 30
ERROR 40
CRITICAL 50

當一個logger收到日志信息后先判斷是否符合level,如果決定要處理就將信息傳遞給Handlers進行處理。

Handlers

Handlers 將logger發過來的信息進行準確地分配,送往正確的地方。舉個栗子,送往控制臺或者文件或者both或者其他地方(進程管道之類的)。它決定了每個日志的行為,是之后需要配置的重點區域。

每個Handler同樣有一個日志級別,一個logger可以擁有多個handler也就是說logger可以根據不同的日志級別將日志傳遞給不同的handler。當然也可以相同的級別傳遞給多個handlers這就根據需求來靈活的設置了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青海省| 浮梁县| 合阳县| 海宁市| 祁阳县| 荔浦县| 婺源县| 水城县| 仙游县| 溧水县| 喜德县| 霍州市| 汕尾市| 前郭尔| 鹤岗市| 建湖县| 文水县| 综艺| 阿拉善左旗| 方山县| 峨眉山市| 营山县| 连州市| 吉水县| 涞源县| 富民县| 龙海市| 陇川县| 洞头县| 安化县| 延吉市| 武川县| 濉溪县| 寿阳县| 明溪县| 贵港市| 宜春市| 六盘水市| 武宁县| 达拉特旗| 景谷|