簡體   English   中英

如何使用logging.handlers.TimedRotatingFileHandler在當前日期之前創建日志文件

[英]how to create a log file by current date with logging.handlers.TimedRotatingFileHandler

我每小時運行一次任務列表,但是我想獲取當前日期命名的日志文件。

def get_mylogger():
    # get logger
    fmt = '%(asctime)-15s %(levelname)-4s %(message)s'
    datefmt = '%Y-%m-%d %H:%M:%S'

    mylogger = logging.getLogger()
    mylogger.setLevel(logging.INFO)

    # log_path = "/opt/spark/logs/pyspark/"
    log_path = "H:\upupw\www\spark\logs\pyspark"
    if not os.path.exists(log_path):
        os.makedirs(log_path)
    log_file_name = 'spark.log'
    log_name = os.path.join(log_path, log_file_name)

    # TimedRotatingFileHandler
    timer = TimedRotatingFileHandler(log_name, when='D')

    formatter = logging.Formatter(fmt, datefmt=datefmt)
    timer.setFormatter(formatter)
    mylogger.addHandler(timer)

    return mylogger

如果我在'10:00:00'中創建第一個日志文件'spark.log',但是直到明天'10:00:00'才創建新文件。 我要在明天0創建一個新文件!

根據TimedRotatingFileHandler日志記錄文檔,您可能希望在TimedRotatingFileHandler函數調用中使用附加參數atTime ,如下所示:

timer = TimedRotatingFileHandler(log_name, when='D', atTime=datetime.time(0, 0, 0))

如文檔中所述:

如果atTime不為None,則它必須是datetime.time實例,該實例指定發生翻轉的一天中的時間,對於將翻轉設置為“在午夜”或“在特定工作日”發生的情況。 請注意,在這些情況下,atTime值可有效地用於計算初始翻轉,隨后的翻轉將通過正常間隔計算來計算。

...您需要提供過渡時間作為datetime.time()的實例。 這是通過將所需的過渡時間作為參數傳遞給datetime.time類來完成的 將小時作為第一個參數,將分鍾作為第二個參數,將秒作為第三個參數。 上面的示例將過渡時間設置為00:00:00。

注意:請務必

import datetime

在代碼的開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM