日誌處理logging 一、日誌輸出 日誌預設的輸出等級為:waring級別及以上的等級 修改日誌的預設輸出等級通過logging.basicConfig(level='INFO') 記錄日誌列印時間:logging.basicConfig(format=console_fmt) console_f ...
日誌處理logging
一、日誌輸出
-
日誌預設的輸出等級為:waring級別及以上的等級
-
修改日誌的預設輸出等級通過
logging.basicConfig(level='INFO')
-
記錄日誌列印時間:
logging.basicConfig(format=console_fmt)
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
- %(name)s 名字
- %(levelname)s 日誌級別
- %(asctime)s 列印時間,年月日十分秒
- %(message)s 日誌中的信息
- %(lineno)d 報錯日誌在代碼中第幾行
-
logging.basicConfig(format=console_fmt,level='INFO')
# -*- coding: utf-8 -*-
import logging
logger = logging.getLogger(__name__)
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
logging.basicConfig(level="INFO",format=console_fmt)
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
二、日誌輸出到控制台
# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:創建日誌器對象,預設等級為warning
logger = logging.getLogger("這是我的一個小測試日誌")
logging.basicConfig(level="INFO")
# 第二步:創建控制台日誌處理器
console_handler = logging.StreamHandler()
# 第三步:設置控制台日誌的輸出級別,需要日誌器也設置日誌級別為info;----根據兩個地方的等級進行對比,取日誌器的級別
console_handler.setLevel(level="WARNING")
# 第四步:設置控制台日誌的輸出格式
console_fmt = "%(name)s--->%(asctime)s--->%(message)s--->%(lineno)d"
fmt1 = logging.Formatter(fmt=console_fmt)
console_handler.setFormatter(fmt=fmt1)
# 第五步:將控制台日誌器,添加進日誌器對象中
logger.addHandler(console_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")
三、輸出到日誌文件
# Time:2022 2022/3/1 17:44
# Author: Jasmay
# -*- coding: utf-8 -*-
# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:創建日誌器對象,預設等級為warning
logger = logging.getLogger("這是我的一個小測試日誌")
logging.basicConfig(level="INFO")
# 第二步:創建文件日誌處理器
file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
# 第三步:設置控制台日誌的輸出級別,需要日誌器也設置日誌級別為info;----根據兩個地方的等級進行對比,取日誌器的級別
# 第四步:設置控制台日誌的輸出格式
file_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
fmt2 = logging.Formatter(fmt = file_fmt)
file_handler.setFormatter(fmt = fmt2)
# 第五步:將文件日誌器,添加進日誌器對象中
logger.addHandler(file_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")
四、同時輸出到控制台+文件
# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:創建日誌器對象,預設等級為warning
logger = logging.getLogger("這是我的一個小測試日誌")
logging.basicConfig(level="INFO")
# 第二步:創建控制台日誌處理器+文件日誌處理器
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
# 第三步:設置控制台日誌的輸出級別,需要日誌器也設置日誌級別為info;----根據兩個地方的等級進行對比,取日誌器的級別
console_handler.setLevel(level="WARNING")
# 第四步:設置控制台日誌和文件日誌的輸出格式
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
file_fmt = "%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
fmt1 = logging.Formatter(fmt = console_fmt)
fmt2 = logging.Formatter(fmt = file_fmt)
console_handler.setFormatter(fmt = fmt1)
file_handler.setFormatter(fmt = fmt2)
# 第五步:將控制台日誌器、文件日誌器,添加進日誌器對象中
logger.addHandler(console_handler)
logger.addHandler(file_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")
五、日誌類:將日誌輸出到控制台+文件
# Time:2022 2022/3/2 10:21
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
class Logger():
def __init__(self,level="DEBUG"):
# 創建日誌器對象
self.logger = logging.getLogger(__name__)
self.logger.setLevel(level)
def console_handler(self,level="DEBUG"):
# 創建控制台的日誌處理器
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
# 處理器添加輸出格式
console_handler.setFormatter(self.get_formatter()[0])
# 返回控制器
return console_handler
def file_handler(self, level="DEBUG"):
# 創建文件的日誌處理器
file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
file_handler.setLevel(level)
# 處理器添加輸出格式
file_handler.setFormatter(self.get_formatter()[1])
# 返回控制器
return file_handler
def get_formatter(self):
"""格式器"""
console_fmt = logging.Formatter(fmt="%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
file_fmt = logging.Formatter(fmt="%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
# 返回的是一個元組
return console_fmt,file_fmt
def get_log(self):
# 日誌器中添加控制台處理器
self.logger.addHandler(self.console_handler())
# 日誌器中添加文件處理器
self.logger.addHandler(self.file_handler())
# 返回日誌實例對象
return self.logger
六、調用日誌類:將日誌輸出到控制台+文件
# Time:2022 2022/3/2 10:45
# Author: Jasmay
# -*- coding: utf-8 -*-
from common.logone import Logger
class TestLog():
def __init__(self):
log = Logger()
self.logger = log.get_log()
def test_baili_01(self):
self.logger.info("開始執行")
self.logger.warning("結束執行")
# 實例化
test = TestLog()
# 調用類中的方法
test.test_baili_01()