【Python】logging模組記錄程式日誌

小亮520cl發表於2017-02-27

日誌可以用來記錄應用程式的狀態、錯誤和資訊訊息,也經常作為除錯程式的工具。它的重要性就不多說了,直接進入正題。

      python提供了一個標準的日誌介面,就是logging模組。日誌級別有DEBUG、INFO、WARNING、ERROR、CRITICAL五種。


首先來看logging簡單的使用方法。


這一看到此圖中使用了debug()、info()、warning()、error()、critical()五個方法,這五個方法分別用來記錄DEBUG、INFO、WARNING、ERROR、CRITICAL級別的日誌。但是你會發現debug()和info()方法沒有顯示任何資訊,這是因為預設的日誌級別是ERROR ,所以低於此級別的日誌不會記錄。你還可能會疑惑輸出來的日誌怎麼這樣子?別急,往下看,慢慢來解釋。


下面我們來看怎麼修改一下日誌級別。


如圖上所示,可以使用basicConfig()方法,修改日誌級別,logging.DEBUG,logging.INFO,logging.WARNING,logging.ERROR,logging.CRITICAL分別代表著那五中日誌級別。可以看到圖中日誌級別設為INFO,那麼INFO級別以上的日誌都會被記錄。


下面再看下怎麼修改日誌的輸出格式。


檢視下執行結果:


這個示例內容可能有點多了,沒關係,我們一點一點來。

首先程式中:

log_format = '%(filename)s [%(asctime)s] [%(levelname)s] %(message)s'      

#這條是定義日誌格式的一個變數。顯示的條目可以是以下內容:

%(levelname):日誌級別的名字格式

%(levelno)s:日誌級別的數字表示

%(name)s:日誌名字

%(funcName)s:函式名字

%(asctime):日誌時間,可以使用datefmt去定義時間格式,如上圖。

%(pathname):指令碼的絕對路徑

%(filename):指令碼的名字

%(module):模組的名字

%(thread):thread id

%(threadName):執行緒的名字

logging.basicConfig(format=log_format,datefmt='%Y-%m-%d %H:%M:%S %p',level=logging.DEBUG)   #設定日誌輸出格式和級別。


上面的示例都是將日誌輸出到螢幕上,能不能寫到一個日誌檔案中呢?答案當然是肯定的,來看:


看下執行結果:


看了吧,日誌的設定都是使用basicConfig()方法,需要注意的是,日誌寫入檔案的預設方式是‘a’,也就是追加,如果想覆蓋檔案,則使用如上圖那樣,使用filemode='w'。

以上是logging模組最常用的了,基本上就夠用了。但是如果你覺得這些還不夠的話,看我下一篇部落格。會講Logger、Handler、Formatter物件,logging模組更高階的用法用法。

http://blog.chinaunix.net/uid-27571599-id-3492860.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2134375/,如需轉載,請註明出處,否則將追究法律責任。

相關文章