軟件開發程序猿日常必備,現用現查&日志記錄


日志記錄—— 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用戶輸出的消息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM