timedrotatingfilehandler
使用配置檔案
參考
# encoding: utf-8
# 建立logger
import logging.handlers
import os
from time import sleep
defcreate_logger
(logger_name, rotate_type=
"file"):
logger = logging.getlogger(logger_name)
logger.setlevel(logging.info)
# 建立handler,用於寫入檔案
base_dir = os.path.abspath(os.path.dirname(__file__)
) base_dir = os.path.join(base_dir,
"logs"
) logs_dir = os.path.join(base_dir,
"{}.log"
.format
(logger_name)
)if rotate_type ==
"time"
:# 按時間分割日誌(天)
file_handler = logging.handlers.timedrotatingfilehandler(logs_dir,
'd',1)
else
:# 按檔案分割日誌(保留3個備份,每個1024*8個位元組)
file_handler = logging.handlers.rotatingfilehandler(logs_dir, mode=
'a', maxbytes=
1024*8
, backupcount=3)
file_handler.setlevel(logging.info)
# 日誌等級:info
# 建立handler,用於輸出到控制台
console_handler = logging.streamhandler(
) console_handler.setlevel(logging.info)
# 日誌等級:info
# 定義handler輸出格式
formatter = logging.formatter(
'%(asctime)-15s %(threadname)-10s %(filename)30s[line:%(lineno)3d] %(levelname)s %(message)s'
) file_handler.setformatter(formatter)
console_handler.setformatter(formatter)
logger.addhandler(file_handler)
logger.addhandler(console_handler)
return logger
logger = create_logger(
"task"
)# # 測試日誌分割模式
# flag = 0
# while true:
# sleep(0.1)
# flag += 1
# logger.warning("row: {}".format(flag))
class logging.handlers.rotatingfilehandler(filename,mode ='a',maxbytes = 0,backupcount = 0,encoding = none,delay = false )
以檔案分割(迭代)日誌,當乙個日誌檔案寫滿,則往新檔案寫入。
示例
logging.handlers.rotatingfilehandler(logs_dir, mode=
'a', maxbytes=
1024*8
, backupcount=
3)
class logging.handlers.timedrotatingfilehandler(filename,when ='h',interval = 1,backupcount = 0,encoding = none,delay = false,utc = false,attime = none )
以指定時間來分割(迭代)日誌,每個日誌檔案儲存指定時間範圍的日誌記錄。日誌檔案分割(迭代)是根據when和 interval的乘積。
interval:間隔格式
backupcount:最多將保留指定數量的檔案
示例
logging.handlers.timedrotatingfilehandler(logs_dir,
'd',
1)
日誌模組 logging模組
logging.debug 通常除錯時用到的日誌資訊 logging.info 證明事情按照預期的那樣工作 longging.warning 表明發生了意外,或者不就得將來發生的問題 如 磁碟滿了 軟體還是正常的工作 longging.error 由於更嚴重的問題導致軟體已經不能繼續執行某些功能 l...
logging日誌模組
日誌級別日誌輸出 將日誌輸出到控制台 log1.py 如下 import logging logging.basicconfig level logging.warning,format asctime s filename s line lineno d levelname s message s...
logging 日誌模組
什麼是日誌 無處不在的 所有的程式必須記錄日誌 給使用者看的 購物軟體 銀行卡給內部人員看的 給技術人員看的 計算器500個表示式 一些計算過程,或者是一些操作過程需要記錄下來 程式出現bug的時候,來幫助我們記錄過程 排除錯誤 給非技術人員看的 學校,公司的軟體 誰在什麼時候做了什麼事兒,刪除操作...