Python logging根據時間創建日志文件


一、配置文件

# 定義logger模塊,root是父類,必需存在的,其它的是自定義。
# logging.getLogger(NAME)便相當於向logging模塊注冊了一種日志打印
# name 中用 . 表示 log 的繼承關系
[loggers]
keys=root,simpleExample
# 設置hand-變量名 key值下面具體設置
[handlers]
keys=fileHandler,consoleHandler,fileHandler1
# 設置輸出格式-變量名 key值下面具體設置
[formatters]
keys=simpleFormatter
# 生效的 hand變量
[logger_root]
# 實現上面定義的logger模塊,必需是[logger_xxxx]這樣的形式

# [logger_xxxx] logger_模塊名稱
# level     級別,級別有DEBUG、INFO、WARNING、ERROR、CRITICAL
# handlers  處理類,可以有多個,用逗號分開
# qualname  logger名稱,應用程序通過 logging.getLogger獲取。對於不能獲取的名稱,則記錄到root模塊。
# propagate 是否繼承父類的log信息,0:否 1:是
level=DEBUG
handlers=fileHandler1,fileHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
# 頭輸出格式,需要先設置-hand變量
[handler_consoleHandler]
# [handler_xxxx]
# class handler類名
# level 日志級別
# formatter,上面定義的formatter
# args handler初始化函數參數
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter
# 頭輸出格式,需要先設置-hand變量
[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-error', 'D', 1, 30)
level=ERROR
formatter=simpleFormatter

# 頭輸出格式,需要先設置-hand變量
[handler_fileHandler1]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-info', 'D', 1, 30)
level=INFO
formatter=simpleFormatter
# 輸出格式-需要先設置-格式變量名
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt= %y-%m-%d %H:%M:%S
# 時間格式

二、創建日志對象

import logging.config
import os
import time
#######################################################
# 日志配置
# 讀取日志配置文件內容
logging.config.fileConfig("logging.conf", defaults={'fileName': 'logs'})
# 創建一個日志器logger
logger = logging.getLogger("simpleExample")
# 創建日志文件
for i in range(0, 10):
    logging.debug("logging.debug")
    logging.info("logging.info")
    logging.warning("logging.warning")
    logging.error("logging.error")
    
    
    time.sleep(2)

三、TimedRotatingFileHandler說明

TimedRotatingFileHandler構造函數聲明
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)
filename    日志文件名前綴
when        日志名變更時間單位
    'S' Seconds
    'M' Minutes
    'H' Hours
    'D' Days
    'W0'-'W6' Weekday (0=Monday)
    'midnight' Roll over at midnight
interval    間隔時間,是指等待N個when單位的時間后,自動重建文件
backupCount 保留日志最大文件數,超過限制,刪除最先創建的文件;默認值0,表示不限制。
delay       延遲文件創建,直到第一次調用emit()方法創建日志文件
atTime      在指定的時間(datetime.time格式)創建日志文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM