日志
1.導入logging子產品
2.簡單配置一下logging
3.出現異常的時候(except),向日志内寫入錯誤資訊
import logging
# filename:檔案名
# format:資料的格式化輸出,最終寫在日志檔案的樣子
# 時間-名稱-級别-子產品:錯誤資訊
# datefmt:時間格式
# level:錯誤的級别權重,當錯誤的權重大于等于level的時候才會被寫入
logging.basicConfig(filename = "hehe",
format="%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level = 10) # 目前配置表示 級别權重 大于等于10就會寫入日志檔案
logging.critical("我是級别權重50")
logging.error("我是級别權重40")
logging.warning("我是警告,級别權重30")
logging.info("我是基本資訊,級别權重20")
logging.debug("我是測試,級别權重10")
logging.log(23,"我是自定義")
簡單做個測試
import logging
import traceback
logging.basicConfig(filename = "hehe",
format="%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level = 10) # 目前配置表示 級别權重 大于等于10就會寫入日志檔案
class JackError(Exception):
pass
for i in range(10):
try:
if i % 3 == 0:
raise FileNotFoundError("檔案不存在")
elif i % 3 == 1:
raise KeyError("key錯了")
elif i % 3 == 2:
raise JackError("JackException")
except FileNotFoundError:
val = traceback.format_exc()
logging.error(val)
except KeyError:
val = traceback.format_exc()
logging.error(val)
except JackError:
val = traceback.format_exc()
logging.error(val)
except Exception:
val = traceback.format_exc()
logging.error(val)
最後,如果你的系統中要把日志分開,比如,一個大項目,有兩個子系統,那這兩個子系統要分開
記錄日志,友善調用,那怎麼辦呢?注意,用上面的 basicConfig 是搞不定的,我們要借助檔案助手
(fileHandler),來幫助我們完成日志的分開記錄
import logging
# 建立一個記錄檔的對象logger(依賴FileHandler)
file_handler = logging.FileHandler("hehe","a",encoding = "utf-8")
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %"
"(levelname)s - %(module)s:%(message)s"))
logger1 = logging.Logger("目标名稱",level = logging.ERROR)
logger1.addHandler(file_handler)
logger1.error("我是A系統")
# 再建立一個記錄檔的對象logging(依賴FileHandler)
file_handler = logging.FileHandler("hehe","a",encoding = "utf-8")
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %"
"(levelname)s - %(module)s:%(message)s"))
logger2 = logging.Logger("目标名稱2",level= logging.ERROR)
logger2.addHandler(file_handler)
logger2.error("我是B系統")