目錄
三、 基本使用
四、實際場景應用推導
4.2 結合logger、handler以及formatter列印日誌
4.3 日誌列印模組封裝
五、補充
建立乙個物件,呼叫logging模組的方法來答應日誌
控制日誌列印的位置
控制日誌列印格式
import logging
預設情況下只列印warning及以上級別的日誌
# 日誌列印到test.log檔案中,日誌列印級別為debug(預設日誌列印方式是a)
filename: 指定日誌檔名
filemode: 和file函式意義相同,指定日誌檔案的開啟模式,'w'或'a'
format: 指定輸出的格式和內容,format可以輸出很多有用資訊(和formatter元件的引數一致)
datefmt: 指定時間格式,同time.strftime()
level: 設定日誌級別,預設為logging.warning
stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略
import logging
# 日誌檔案位置
log_type = 'test_info.log'
log_level = logging.debug
logger = logging.getlogger()
logger.setlevel(log_level)
# 日誌列印到檔案中
# 設定日誌檔案路徑
log_file = "%s/logs/%s" %(settings.base_dir, log_type)
fh = logging.filehandler(log_file)
fh.setlevel(log_level)
# 設定日誌檔案格式
formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - lineno:%(lineno)d - %(message)s')
# 將日誌檔案格式設定到fh中
fh.setformatter(formatter)
# 將控制代碼新增至logger
''' 列印日誌類
:param log_type:
:return:
'''#create logger
logger = logging.getlogger(log_type)
logger.setlevel(settings.log_level)
# 日誌列印到控制台
# create console handler and set level to debug
# ch = logging.streamhandler()
# ch.setlevel(log_level)
# create file handler and set level to warning
log_file = "%s/logs/%s" %(settings.base_dir, settings.log_types[log_type])
fh = logging.filehandler(log_file, encoding='utf-8', mode='a') # 指定列印日誌格式為utf-8解決亂碼問題,預設情況mode也是a
fh.setlevel(settings.log_level)
# create formatter
formatter = logging.formatter(
fmt = '%(asctime)s - %(name)s -%(threadname)s:%(process)d - %(filename)s:%(lineno)d - %(message)s',
datefmt = '%y-%m-%d %a %h:%m:%s', # 格式化日期輸出
)# add formatter to ch and fh
# ch.setformatter(formatter)
fh.setformatter(formatter)
# add ch and fh to logger
# logger.addhandler(ch)
logger.addhandler(fh)
return logger
logger = logger("info")
logger.debug("測試資料")
logger.info("測試資料")
logger.error("測試資料")
logger.critical("測試資料")
logger.warning("測試資料")
: 列印日誌級別的數值
%(levelname)s
: 列印日誌級別名稱
%(pathname)s
: 列印當前執行程式的路徑,其實就是sys.argv[0]
%(filename)s
: 列印當前執行程式名
%(funcname)s
: 列印日誌的當前函式
%(lineno)d
: 列印日誌的當前行號
%(asctime)s
: 列印日誌的時間
%(thread)d
: 列印執行緒id
%(threadname)s
: 列印執行緒名稱
%(process)d
: 列印程序id
%(message)s
: 列印日誌資訊
03 Python基礎語法1
總結 強調 python3 print後一定要加雙引號 一 python環境安裝 1.1 anaconda spyder 使用 1.2 pycharm 1.3 anaconda 二 python基礎語法 2.1 輸入輸出 input,print 2.2 判斷語句 if else 1 縮排和冒號區分 ...
03 Python 基礎知識
目錄 1.注釋 2.變數及型別 3.命名規則 4.運算子 coding utf 8 time 2021 1 23 author 大海 這是單行注釋 這是多行注釋1 這是多行注釋2 運算子 描述例項 加 兩個物件相加 a b 輸出結果 30 減 得到負數或是乙個數減去另乙個數 a b 輸出結果 10 ...
03 Python集合型別
python集合型別思維導圖 只有1個元素的tuple定義時必須加乙個逗號,來消除歧義 2 常用操作 2 字典的常見操作 2 新增元素 3 刪除元素 clear 3 字典的常見函式 2 keys map.keyset 3 values 4 items 4 字典遍歷 3 dict可以用在需要高速查詢的...