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
。如果我的回答对你有帮助,请接受并投票表决。