今天使用python3.6來例項化logging,但是發現logger = logging.getlogger(__name__)記錄中文時日誌會顯示亂碼;發現python3.6需要設定下logging.handler才可以正常顯示中文,沒仔細研究,先貼上**,後續補充原因
設定這樣格式中文還是會顯示亂碼
logging.basicconfig(level=logging.info,format='%(asctime)s [%(levelname)s] %(message)s (%(filename)s:l%(lineno)d)',
datefmt='%y-%m-%d %h:%m:%s',
filename='spider.log',
filemode='a')
設定handler然後新增encoding='utf-8'格式,中文顯示正常
importlogging,logging.handler
handler = logging.handlers.rotatingfilehandler('
../logs/kaola.log
',maxbytes=1024*1024,backupcount=5,encoding='
utf-8')
fmt = '
%(asctime)s-%(levelname)s-%(message)s
' #日誌輸出的格式
formatter =logging.formatter(fmt) #設定格式
handler.setformatter(formatter)
logger = logging.getlogger('
kaola
') #設定日誌名稱
logger.addhandler(handler) #新增剛設定的handler
logger.setlevel(logging.info) #設定級別為info以上記錄到日誌
這個handler類似於上面的filehandler,但是它可以管理檔案大小。當檔案達到一定大小之後,它會自動將當前日誌檔案改名,然後建立 乙個新的同名日誌檔案繼續輸出。比如日誌檔案是chat.log。當chat.log達到指定的大小之後,rotatingfilehandler自動把 檔案改名為chat.log.1。不過,如果chat.log.1已經存在,會先把chat.log.1重新命名為chat.log.2。。。最後重新建立 chat.log,繼續輸出日誌資訊。它的建構函式是:rotatingfilehandler( filename[, mode[, maxbytes[, backupcount]]])其中filename和mode兩個引數和filehandler一樣。maxbytes用於指定日誌檔案的最大檔案大小。如果maxbytes為0,意味著日誌檔案可以無限大,這時上面描述的重新命名過程就不會發生。
backupcount用於指定保留的備份檔案的個數。比如,如果指定為2,當上面描述的重新命名過程發生時,原有的chat.log.2並不會被更名,而是被刪除。
下面這種屬於基本格式,基本專案都會用到這種格式
1import
logging,logging.config23
4 log_config =,
16},
1718
#處理器集合19'
handlers
': ,27#
輸出到檔案28'
log'
: ,37
},38
#過濾器39'
filters':
43},
4445
#日誌格式集合46'
formatters':
52}53}
5455
logging.config.dictconfig(log_config)
56 logger = logging.getlogger("
default
")
python常用模組 logger模組
python的logging模組提供了通用的日誌系統,熟練使用logging模組可以方便開發者開發第三方模組或者是自己的python應用。python使用logging模組記錄日誌涉及四個主要的類 logger 提供了應用程式可以直接使用的介面 handler 將 logger建立的 日誌記錄傳送到...
Python中利用logger進行日誌格式輸出
本文主要是針對python程式設計師小白在寫專案 時的焦慮 什麼時候列印日誌?日誌列印格式是什麼樣的?列印日誌怎麼存?等等這些問題都是剛開始需要考慮的。其中logs資料夾是專門儲存日誌檔案的,對日誌檔案的輸出要求是 1.logs資料夾下包括三種型別 log.log error.log 歷史日誌資料夾...
python使用logger實現日誌回滾和異常捕捉
使用logger模組設定日誌輸出到檔案中,使用timedrotatingfilehandler import time import logging import logging.handlers defloghandler name 初始化logging logging.basicconfig m...