Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用logging.handlers.TimedRotatingFileHandler按当前日期创建日志文件_Python_Logging - Fatal编程技术网

Python 如何使用logging.handlers.TimedRotatingFileHandler按当前日期创建日志文件

Python 如何使用logging.handlers.TimedRotatingFileHandler按当前日期创建日志文件,python,logging,Python,Logging,我每小时运行一次任务列表,但我希望获得按当前日期命名的日志文件 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 = "/

我每小时运行一次任务列表,但我希望获得按当前日期命名的日志文件

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
函数调用中使用附加参数
atTime
,如下所示:

timer = TimedRotatingFileHandler(log_name, when='D', atTime=datetime.time(0, 0, 0))
如文件中所述:

如果atTime不是None,则它必须是datetime.time实例,该实例指定发生滚动的时间,适用于将滚动设置为“午夜”或“特定工作日”的情况。请注意,在这些情况下,atTime值有效地用于计算初始侧翻,随后的侧翻将通过正常间隔计算进行计算

…您需要提供滚动时间作为
datetime.time()
的实例。这是通过将所需的滚动时间作为参数传递给。将小时作为第一个参数传递,将分钟作为第二个参数传递,将秒作为第三个参数传递。上面的示例将滚动时间设置为00:00:00

注意:请务必

import datetime

在代码的开头。

在python2.7中,TimedRotatingFileHandler没有此参数。在python3.6中有此参数。同样感谢python2.7,它提供了额外的参数when,它接受值:
when=midnight
。如果我的回答对你有帮助,请接受并投票表决。