最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中用logging實(shí)現(xiàn)日志滾動和過期日志刪除功能

 更新時間:2019年08月20日 13:33:27   作者:feiquan  
這篇文章主要介紹了python中用logging實(shí)現(xiàn)日志滾動和過期日志刪除功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

logging庫提供了兩個可以用于日志滾動的class(可以參考https://docs.python.org/2/library/logging.handlers.html),一個是RotatingFileHandler,它主要是根據(jù)日志文件的大小進(jìn)行滾動,另一個是TimeRotatingFileHandler,它主要是根據(jù)時間進(jìn)行滾動。在實(shí)際應(yīng)用中,我們通常根據(jù)時間進(jìn)行滾動,因此,本文中主要介紹TimeRotaingFileHandler的使用方法(RotatingFileHandler一樣)。代碼示例如下:

#!/usr/bin/env python
#_*_coding:utf-8_*_
# vim : set expandtab ts=4 sw=4 sts=4 tw=100 :

import logging
import time
import re
from logging.handlers import TimedRotatingFileHandler
from logging.handlers import RotatingFileHandler

def main():
 #日志打印格式
 log_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
 formatter = logging.Formatter(log_fmt)
 #創(chuàng)建TimedRotatingFileHandler對象
 log_file_handler = TimedRotatingFileHandler(filename="ds_update", when="M", interval=2, backupCount=2)
 #log_file_handler.suffix = "%Y-%m-%d_%H-%M.log"
 #log_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}.log$")
 log_file_handler.setFormatter(formatter) 
 logging.basicConfig(level=logging.INFO)
 log = logging.getLogger()
 log.addHandler(log_file_handler)
 #循環(huán)打印日志
 log_content = "test log"
 count = 0
 while count < 30:
  log.error(log_content)
  time.sleep(20)
  count = count + 1
 log.removeHandler(log_file_handler)


if __name__ == "__main__":
 main()

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,表示每天產(chǎn)生一個日志文件;
backupCount: 表示日志文件的保留個數(shù);

除了上述參數(shù)之外,TimedRotatingFileHandler還有兩個比較重要的成員變量,它們分別是suffix和extMatch。suffix是指日志文件名的后綴,suffix中通常帶有格式化的時間字符串,filename和suffix由“.”連接構(gòu)成文件名(例如:filename=“runtime”, suffix=“%Y-%m-%d.log”,生成的文件名為runtime.2015-07-06.log)。extMatch是一個編譯好的正則表達(dá)式,用于匹配日志文件名的后綴,它必須和suffix是匹配的,如果suffix和extMatch匹配不上的話,過期的日志是不會被刪除的。比如,suffix=“%Y-%m-%d.log”, extMatch的只應(yīng)該是re.compile(r”^\d{4}-\d{2}-\d{2}.log$”)。默認(rèn)情況下,在TimedRotatingFileHandler對象初始化時,suffxi和extMatch會根據(jù)when的值進(jìn)行初始化:

‘S': suffix=”%Y-%m-%d_%H-%M-%S”, extMatch=r”\^d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}”; 
‘M':suffix=”%Y-%m-%d_%H-%M”,extMatch=r”^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}”; 
‘H':suffix=”%Y-%m-%d_%H”,extMatch=r”^\d{4}-\d{2}-\d{2}_\d{2}”; 
‘D':suffxi=”%Y-%m-%d”,extMatch=r”^\d{4}-\d{2}-\d{2}”; 
‘MIDNIGHT':”%Y-%m-%d”,extMatch=r”^\d{4}-\d{2}-\d{2}”; 
‘W':”%Y-%m-%d”,extMatch=r”^\d{4}-\d{2}-\d{2}”; 

如果對日志文件名沒有特殊要求的話,可以不用設(shè)置suffixextMatch,如果需要,一定要讓它們匹配上。

總結(jié)

以上所述是小編給大家介紹的python中用logging實(shí)現(xiàn)日志滾動和過期日志刪除功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

相關(guān)文章

  • django配置使用asgi的實(shí)現(xiàn)步驟

    django配置使用asgi的實(shí)現(xiàn)步驟

    本文主要介紹了django配置使用asgi的實(shí)現(xiàn)步驟,支持 ASGI 協(xié)議能處理傳統(tǒng)HTTP請求,也能支持實(shí)時WebSocket通信,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 使用python+pygame開發(fā)消消樂游戲附完整源碼

    使用python+pygame開發(fā)消消樂游戲附完整源碼

    消消樂小游戲相信大家都玩過,大人小孩都喜歡玩的一款小游戲,那么基于程序是如何實(shí)現(xiàn)的呢?今天帶大家,用python+pygame來實(shí)現(xiàn)一下這個花里胡哨的消消樂小游戲功能,感興趣的朋友一起看看吧
    2021-06-06
  • Python的函數(shù)的一些高階特性

    Python的函數(shù)的一些高階特性

    這篇文章主要介紹了Python的函數(shù)的一些高階特性,包括函數(shù)名用作變量等一些小技巧,需要的朋友可以參考下
    2015-04-04
  • pytest多進(jìn)程或多線程執(zhí)行測試實(shí)例

    pytest多進(jìn)程或多線程執(zhí)行測試實(shí)例

    這篇文章介紹了pytest多進(jìn)程或多線程執(zhí)行測試的實(shí)例,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法

    Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法

    這篇文章主要介紹了Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Python中的Super用法示例詳解

    Python中的Super用法示例詳解

    Python中可以直接通過調(diào)用父類名調(diào)用父類方法,在多重繼承中,使用super()是一個很好的習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于Python中Super用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • flask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例

    flask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例

    下面小編就為大家?guī)硪黄猣lask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java Spring項目國際化(i18n)詳細(xì)方法與實(shí)例

    Java Spring項目國際化(i18n)詳細(xì)方法與實(shí)例

    這篇文章主要介紹了Java Spring項目國際化詳細(xì)方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    這篇文章主要介紹了Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python進(jìn)程池Pool應(yīng)用實(shí)例分析

    Python進(jìn)程池Pool應(yīng)用實(shí)例分析

    這篇文章主要介紹了Python進(jìn)程池Pool應(yīng)用,結(jié)合實(shí)例形式分析了Python進(jìn)程池Pool功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-11-11

最新評論

阳谷县| 怀宁县| 乌兰察布市| 夏河县| 汤原县| 大新县| 永泰县| 化州市| 黄梅县| 常熟市| 彰武县| 华池县| 偃师市| 桂东县| 阿坝| 合江县| 肥西县| 景宁| 宁波市| 贵阳市| 河间市| 台南县| 农安县| 无锡市| 柘城县| 巴青县| 京山县| 成武县| 横山县| 格尔木市| 如东县| 临武县| 田林县| 鄱阳县| 南投县| 青铜峡市| 建平县| 阿荣旗| 全椒县| 社旗县| 永和县|