日誌模組 logging

2022-02-26 21:43:24 字數 2332 閱讀 8677

作用

在程式的執行過程中,會遇到很多需要列印的中間資訊,通過使用logging模組可以詳細的輸出資訊,不同於print()函式的單一功能。

應用場景

對於軟體程式的執行過程中輸出中間資訊,如賬單資訊,軟體的操作資訊。

分類logging模組下有:logger、handler、filter、formatter 4個元件。

logger:提供日誌介面,**用**使用。logger最長用的操作有兩類:配置和傳送日誌訊息。可以通過logging.getlogger(name)獲取logger物件,如果不指定name則返回root物件,多次使用相同的name呼叫getlogger方法返回同乙個logger物件。

handler:將日誌傳送到合適的目的地,比如檔案,socket等。乙個logger物件可以通過addhandler方法新增0到多個handler,每個handler又可以定義不同日誌級別,以實現日誌分級過濾顯示。

filter:提供一種優雅的方式決定乙個日誌記錄是否傳送到handler。

formater:指定日誌的輸出格式。

配置引數:

logging.basicconfig()函式中可通過具體引數來更改logging模組預設行為,可用引數有:

filename:用指定的檔名建立filedhandler,這樣日誌會被儲存在指定的檔案中。

filemode:檔案開啟方式,在指定了filename時使用這個引數,預設值為「a」還可指定為「w」。

format:指定handler使用的日誌顯示格式。

datefmt:指定日期時間格式。

level:設定rootlogger(後邊會講解具體概念)的日誌級別

stream:用指定的stream建立streamhandler。可以指定輸出到sys.stderr,sys.stdout或者檔案(f=open(『test.log』,』w』)),預設為sys.stderr。若同時列出了filename和stream兩個引數,則stream引數會被忽略。

format引數中可能用到的格式化串:

%(name)s logger的名字

%(levelno)s 數字形式的日誌級別

%(levelname)s 文字形式的日誌級別

%(pathname)s 呼叫日誌輸出函式的模組的完整路徑名,可能沒有

%(filename)s 呼叫日誌輸出函式的模組的檔名

%(module)s 呼叫日誌輸出函式的模組名

%(funcname)s 呼叫日誌輸出函式的函式名

%(lineno)d 呼叫日誌輸出函式的語句所在的**行

%(created)f 當前時間,用unix標準的表示時間的浮 點數表示

%(relativecreated)d 輸出日誌資訊時的,自logger建立以 來的毫秒數

%(asctime)s 字串形式的當前時間。預設格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒

%(thread)d 執行緒id。可能沒有

%(threadname)s 執行緒名。可能沒有

%(process)d 程序id。可能沒有

%(message)s使用者輸出的訊息

示例:

import

logging

#首先建立乙個總的logger物件,完成對總的日誌資訊的配置

logger =logging.getlogger()

#建立乙個handler,將日誌寫入到檔案

fh = logging.filehandler("

a.txt")

#建立乙個handler,將日誌列印到控制台

ch =logging.streamhandler()

#建立乙個日誌列印格式物件

formatter = logging.formatter("

%(asctime)s--%(name)s--%(lineno)d--%(levelname)s--%(message)s")

#設定寫入到檔案的日誌格式

fh.setformatter(formatter)

#設定輸出到控制台的日誌格式

ch.setformatter(formatter)

#為logger新增handler(傳送到指定目的地)

logger.addhandler(fh)

logger.addhandler(ch)

#設定日誌記錄等級

logger.setlevel(logging.debug)

logger.info(

"info")

logger.warning(

"warring")

logger.error(

"error

")

日誌模組 logging模組

logging.debug 通常除錯時用到的日誌資訊 logging.info 證明事情按照預期的那樣工作 longging.warning 表明發生了意外,或者不就得將來發生的問題 如 磁碟滿了 軟體還是正常的工作 longging.error 由於更嚴重的問題導致軟體已經不能繼續執行某些功能 l...

logging日誌模組

日誌級別日誌輸出 將日誌輸出到控制台 log1.py 如下 import logging logging.basicconfig level logging.warning,format asctime s filename s line lineno d levelname s message s...

logging 日誌模組

什麼是日誌 無處不在的 所有的程式必須記錄日誌 給使用者看的 購物軟體 銀行卡給內部人員看的 給技術人員看的 計算器500個表示式 一些計算過程,或者是一些操作過程需要記錄下來 程式出現bug的時候,來幫助我們記錄過程 排除錯誤 給非技術人員看的 學校,公司的軟體 誰在什麼時候做了什麼事兒,刪除操作...