日志記錄—— logging模塊
日志用處:
1.記錄用戶信息
2.記錄個人流水
3.記錄軟件的運行狀態
4.記錄程序員發出的指令(跳板機)
5.用於程序員代碼調試(print特別消耗內存,在開發測試過程中不建議使用)
函數式簡單配置
importlogging
logging.debug() #debug 調試
logging.info() #info 信息
logging.warning() # info 警告
logging.error() # error 錯誤
logging.critical() # critical 危險
-
日志中要記錄的信息,默認從warning開始記錄
-
默認情況下Python的logging模塊將日志打印到了標准輸出中,且只顯示了大於等於WARNING級別的日志,后邊的級別日志不顯示,這說明默認的日志級別設置為WARNING
-
(日志級別等級:CRITICAL(50) > ERROR(40) > WARNING(30) > INFO(20) > DEBUG(10))
-
默認的日志格式為日志級別:Logger名稱:用戶輸出消息
手動擋 ——已經配置好的,直接拿過來使用
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename="test.log",
filemode="a",
)
logging.debug('調試消息')
logging.info('信息消息')
logging.warning('警告消息')
logging.error('錯誤消息')
logging.critical('關鍵信息')
自動擋 ——需要自己去進行配置
import logging
初始化一個空日志
logger = logging.getLogger() # -- 創建了一個對象
創建一個文件,用於記錄日志信息
fh = logging.FileHandler('test.log',encoding='utf-8')
# 創建一個文件,用於記錄日志信息
fh1 = logging.FileHandler('test1.log',encoding='utf-8')
# 創建一個可以在屏幕輸出的東西
ch = logging.StreamHandler()
# 對要記錄的信息定義格式
msg = logging.Formatter('%(asctime)s - [line:%(lineno)d] %(filename)s - %(levelname)s - %(message)s')
# 對要記錄的信息定義格式
msg1 = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# 設置記錄等級
logger.setLevel(10) or logger.setLevel(logging.DEBUG)
# 等級對應表
'''
DEBUG - 10
INFO - 20
WARNING - 30
ERROR - 40
CRITICAL - 50
'''
# 將咱們設置好的格式綁定到文件上
fh.setFormatter(msg)
fh1.setFormatter(msg)
# 將咱們設置好的格式綁定到屏幕上
ch.setFormatter(msg1)
# 將設置存儲日志信息的文件綁定到logger日志上
logger.addHandler(fh) #logger對象可以添加多個fh和ch對象
logger.addHandler(fh1)
logger.addHandler(ch)
# 記錄日志
logger.debug([1,2,3,4,])
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
basicConfig()函數中可通過具體參數來更改logging模塊默認行為,可用參數有:
- filename:用指定的文件名創建FiledHandler,這樣日志會被存儲在指定的文件中。
- filemode:文件打開方式,在指定了filename時使用這個參數,默認值為“a”還可指定為“w”。
- format:指定handler使用的日志顯示格式。
- datefmt:指定日期時間格式。
- level:設置記錄日志的級別
- 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用戶輸出的消息