logging日誌按天分割

2021-10-02 01:12:46 字數 1854 閱讀 7449

說我們沒有為這個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...