一:參考官方文件:
二:日誌的級別:
日誌記錄級別的數值在下表中給出。如果你想要定義自己的級別,並且需要它們具有相對於預定義級別的特定值,那麼這你可能對以下內容感興趣。如果你定義具有相同數值的級別,它將覆蓋預定義的值;預定義的名稱將失效。
在工作中常用的日誌級別:
三:基本使用
import logging logging.debug("this is debug。。。") logging.info('this is info ....') logging.warning('this is warning....')
四:配置日誌級別
import logging # 設定日誌級別為 DEBUG logging.basicConfig(level=logging.DEBUG) logging.debug("this is debug。。。") logging.info('this is info ....') logging.warning('this is warning....')
預設日誌列印在控制檯,也可以將日誌的儲存到檔案當中。
import logging # 設定日誌級別為 DEBUG ,檔名為my.log 檔案模式為追加模式 logging.basicConfig(level=logging.DEBUG,filename='my.log',filemode='a',encoding='utf8') logging.debug("this is debug。。。") logging.info('this is info ....') logging.warning('this is warning....')
如果配置到檔案中,那麼命令列就不再輸出列印資訊。
五:配置同時控制檯和檔案中列印
在專案中 應該是將日誌同時輸出到控制檯以及在檔案中列印。
配置日誌格式
屬性名稱 |
格式 |
描述 |
---|---|---|
args |
此屬性不需要使用者進行格式化。 |
合併到 |
asctime |
|
表示 |
created |
|
|
exc_info |
此屬性不需要使用者進行格式化。 |
異常元組(例如 |
檔名 |
|
|
funcName |
|
函式名包括呼叫日誌記錄. |
levelname |
|
訊息文字記錄級別( |
levelno |
|
訊息數字的記錄級別 ( |
lineno |
|
發出日誌記錄呼叫所在的源行號(如果可用)。 |
message |
|
記入日誌的訊息,即 |
module -- 模組 |
|
模組 ( |
msecs |
|
|
msg |
此屬性不需要使用者進行格式化。 |
在原始日誌記錄呼叫中傳入的格式字串。 與 |
名稱 |
|
用於記錄呼叫的日誌記錄器名稱。 |
pathname |
|
發出日誌記錄呼叫的原始檔的完整路徑名(如果可用)。 |
process |
|
程式ID(如果可用) |
processName |
|
程式名(如果可用) |
relativeCreated |
|
以毫秒數表示的 LogRecord 被建立的時間,即相對於 logging 模組被載入時間的差值。 |
stack_info |
此屬性不需要使用者進行格式化。 |
當前執行緒中從堆疊底部起向上直到包括日誌記錄呼叫並引發建立當前記錄堆疊幀建立的堆疊幀資訊(如果可用)。 |
thread |
|
執行緒ID(如果可用) |
threadName |
|
執行緒名(如果可用) |
通過使用檔案處理器和控制檯處理器進行操作。
import logging # 設定名字 logger = logging.getLogger("某專案的日誌") # 設定級別 logger.setLevel(logging.DEBUG) # 配置格式化樣式 文字內容格式 formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s') # 新增控制檯處理器 ls = logging.StreamHandler() ls.setLevel(logging.DEBUG) # 設定格式 ls.setFormatter(formater) # 控制檯處理器新增到logger中 logger.addHandler(ls) # 新增檔案處理器 import os import time logsdir = os.path.join( os.path.dirname( os.path.dirname(__file__)),'logs') # 日誌目錄定義 if not os.path.exists(logsdir): os.mkdir(logsdir) # 日誌檔案 以當時執行的日誌格式 logfile = os.path.join(logsdir,time.strftime('%Y_%m_%d')+'.log') lf = logging.FileHandler(filename=logfile,encoding='utf8') lf.setLevel(logging.DEBUG) lf.setFormatter(formater) # 檔案處理器新增到日誌當中 logger.addHandler(lf) logger.debug('this is debug')
某專案的日誌