使用logger模組設定日誌輸出到檔案中,使用timedrotatingfilehandler
import使用traceback statck追蹤記錄**異常,格式為:time
import
logging
import
logging.handlers
defloghandler(name):
#初始化logging
logging.basicconfig()
mylog=logging.getlogger(name)
#設定日誌級別
mylog.setlevel(logging.info)
#新增timeroatingfilehandler
#定義乙個1天換一次log檔案的handler
#保留7個舊log檔案
timefilehandler=logging.handlers.timedrotatingfilehandler("
log1/log.log
",when='
d',interval=1,backupcount=7)
timefilehandler.suffix="
%y-%m-%d.log"#
設定log記錄輸出的格式
formatter=logging.formatter('
%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d-%(message)s')
timefilehandler.setformatter(formatter)
#新增到logger中
mylog.addhandler(timefilehandler)
return mylog
try最終**:: do-something-block
except
: logger.exception(
"exception logged
")
import實現捕獲異常效果如下:time
import
logging
import
logging.handlers
defloghandler(name):
#初始化logging
logging.basicconfig()
mylog=logging.getlogger(name)
#設定日誌級別
mylog.setlevel(logging.info)
#新增timeroatingfilehandler
#定義乙個1天換一次log檔案的handler
#保留7個舊log檔案
timefilehandler=logging.handlers.timedrotatingfilehandler("
log1/log.log
",when='
d',interval=1,backupcount=7)
timefilehandler.suffix="
%y-%m-%d.log"#
設定log記錄輸出的格式
formatter=logging.formatter('
%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d-%(message)s')
timefilehandler.setformatter(formatter)
#新增到logger中
mylog.addhandler(timefilehandler)
return
mylog
#呼叫函式,實現日誌輸出
log=loghandler('
mylog')
try:
assert 1==2log.info(
'hello')
except
:
#實現追蹤異常返回資訊
log.exception("
failed to assert 1==2
")
1、日誌記錄輸出的格式,例項化formatter類
屬性名稱
格式
說明
name
%(name)s
日誌的名稱
asctime
%(asctime)s
可讀時間,預設格式『2003-07-08 16:49:45,896』,逗號之後是毫秒
filename
%(filename)s
檔名,pathname的一部分
pathname
%(pathname)s
檔案的全路徑名稱
funcname
%(funcname)s
呼叫日誌多對應的方法名
levelname
%(levelname)s
日誌的等級
levelno
%(levelno)s
數位化的日誌等級
lineno
%(lineno)d
被記錄日誌在原始碼中的行數
module
%(module)s
模組名msecs
%(msecs)d
時間中的毫秒部分
process
%(process)d
程序的id
processname
%(processname)s
程序的名稱
thread
%(thread)d
執行緒的id
threadname
%(threadname)s
執行緒的名稱
relativecreated
%(relativecreated)d
日誌被建立的相對時間,以毫秒為單位
2、日誌級別
fatal(致命錯誤,一般不用)>
critical(嚴重錯誤,級別數值50)>
error(錯誤,級別數值40)>
warning(警告資訊,級別數值30)
>info(日常資訊,級別數值20)>
debug(調式資訊,級別數值10)
格式為:
setlevel(logging.info)3、按照時間日誌回滾
格式:
timedrotatingfilehandler(filename [,when [,interval [,backupcount]]])when 是乙個字串的定義如下:
「s」: seconds
「m」: minutes
「h」: hours
「d」: days
「w」: week day (0=monday)
「midnight」: roll over at midnight
interval: 是指等待多少個單位when的時間後,logger會自動重建檔案,當然,這個檔案的建立
取決於filename+suffix,若這個檔案跟之前的檔案有重名,則會自動覆蓋掉以前的檔案,所以
有些情況suffix要定義的不能因為when而重複。
backupcount :是保留日誌個數。預設的0是不會自動刪除掉日誌。若設7,則在檔案的建立過程中
庫會判斷是否有超過這個7,若超過,則會從最先建立的開始刪除。
4、按照檔案大小回滾日誌
logging.handlers.rotatingfilehandler(maxbytes:每個日誌檔案最大的大小(這裡設定1k)'log-day/mydemo.log
', maxbytes=1*1024, backupcount=5)
backupcount: 是保留日誌個數。預設的0是不會自動刪除掉日誌。若設7,則在檔案的建立過程中
庫會判斷是否有超過這個數,若超過,則會從最先建立的開始刪除。
如何使用logger
ruby的logger也是一貫地簡單。控制日誌檔案大小,保留10個歷史檔案,檔案大小最大為1024000位元組 logger logger.new foo.log 10,1024000 每日 星期 月乙個日誌檔案 logger logger.new foo.log daily logger logg...
python常用模組 logger模組
python的logging模組提供了通用的日誌系統,熟練使用logging模組可以方便開發者開發第三方模組或者是自己的python應用。python使用logging模組記錄日誌涉及四個主要的類 logger 提供了應用程式可以直接使用的介面 handler 將 logger建立的 日誌記錄傳送到...
Logger日誌框架使用學習
最近也開始注重開發的規範,以前開發專案的時候很少會去使用日誌框架記錄一些東西,部門大佬也提了希望我們著手開始尊重開發規範,所以先學習下日誌框架的用法以及應用場景 我們在 中經常能夠看到以下 該方法的作用就是返回與引數傳遞類對應的logger物件。這邊主要是有個logge ctory對我們的日誌進行管...