說我們沒有為這個logger指定handler,它不知道要怎麼處理日誌,要輸出到**去。那我們就給他加乙個handler吧,handler的種類有很多,常用的有4種:
logging.streamhandler -> 控制台輸出
logging.filehandler -> 檔案輸出
logging.handlers.rotatingfilehandler -> 按照大小自動分割日誌檔案,一旦達到指定的大小重新生成檔案
logging.handlers.timedrotatingfilehandler -> 按照時間自動分割日誌檔案
有時候我們需要對日誌檔案進行分割,以方便我們的管理。python 提供了兩個處理器,方便我們分割檔案:
logging.handlers.rotatingfilehandler -> 按照大小自動分割日誌檔案,一旦達到指定的大小重新生成檔案
logging.handlers.timedrotatingfilehandler -> 按照時間自動分割日誌檔案
使用方法跟上面的 handler 類似,只是需要新增一些引數配置,比如when='d'表示以天為週期切分檔案,其他引數的意思可以參考
import logging
from logging import handlers
logger = logging.
getlogger()
format = logging.
formatter
('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
)# rotahandler = handlers.
rotatingfilehandler
(os.path.
join
('root』, 'logs/my')
, maxbytes=
1024
*1024
*100
)rotahandler = handlers.
timedrotatingfilehandler
(os.path.
join
('root』, 'logs/day'), when='s', )
rotahandler.
setlevel
(logging.
debug
)rotahandler.
setformatter
(format)
logger.
addhandler
(rotahandler)
若改為when=『s』,則以秒為週期進行切割,執行幾次後會生成檔案:
在這裡插入描述
針對timedrotatingfilehandler 做個說明
filename:日誌檔名的prefix;
when:是乙個字串,用於描述滾動週期的基本單位,字串的值及意義如下:
「s」: seconds
「m」: minutes
「h」: hours
「d」: days
「w」: week day (0=monday)
「midnight」: roll over at midnight
interval: 滾動週期,單位有when指定,比如:when=』d』,interval=1,表示每天產生乙個日誌檔案;
backupcount: 表示日誌檔案的保留個數
nginx 按天分割日誌
nginx預設的日誌是統一寫到 安裝目錄的log下的 訪問日誌是 access.log,錯誤日誌是error.log 而且並沒有提供乙個可配置的地方,對於生產環境,日誌都集中在一塊兒,沒過幾天日誌檔案就可以大到幾個g,只能是使用作業系統的定時任務,自己寫指令碼定時執行,將log日誌進行切割。定義日誌...
tomcat日誌按天分割(cronolog)
安裝方式一 shell sudo yum install cronolog 或shell sudo apt get install cronolog 驗證cronolog shell which cronolog 安裝方式二 shell wget shell tar zxf cronolog 1.6...
linux下nginx日誌按天分割
nginx的日誌檔案沒有rotate功能。一段時間過後,日誌將越發臃腫,乙個accesslog很快就突破2.5g,因此有必要通過指令碼實現按天切割日誌。1 將日誌檔案備份到 usr local nginx logs historylog目錄下,備份的檔名稱是access yyyymmdd.log和e...