RotatingFileHandler覆盖无法按预期工作

时间:2018-07-16 04:34:30

标签: python-2.7 logging file-io

我正在尝试实现RotatingFileHandler,但是将其中的每个“完整”日志文件都移动到另一个位置并重命名。到目前为止,我所拥有的是一个继承自RotatingFileHandler的类,并且具有以下重写的函数:

    def doRollover(self):
    print ("Rollover started")
    try:
        RotatingFileHandler.doRollover(self)
        self.stream.close()
        if self.backupCount > 0:
            for i in range(self.backupCount - 1, 0, -1):
                sfn = "%s.%d" % (self.baseFilename, i)
                print ("source: " + sfn)
                if os.path.exists(sfn):
                    filename_w_extension = os.path.split(self.baseFilename)
                    print ("file_name with extension: " + filename_w_extension)
                    dfn = self.destination_dir + filename_w_extension
                    if os.path.exists(sfn):
                        print ("Source: " + sfn)
                        if os.path.exists(dfn):
                            print ("Destination: " + dfn + " exists")
                            os.remove(dfn)
                        else:
                            print ("Destination doesn't exist" + dfn)
                        os.rename(sfn, dfn)
                        print ("Rename done")
                else:
                    print "sfn was not found"
            dfn = self.baseFilename.split("_")[0]
            dfn += datetime.datetime.today().strftime('%m%d%Y_%H%M')
            print ("New file name: " + dfn)
            if os.path.exists(dfn):
                os.remove(dfn)
            os.rename(self.baseFilename, dfn)

        self.backupCount = 0
        self.mode = 'w'
        self.stream = self._open()
    except Exception as exp:
        print ("error occured " + exp)
    print ("Stream open")

在for循环之后,我无法进行任何测试,因为翻转事件在应用启动后立即发生,并且日志文件在此之后再也不会旋转。从本质上讲,在执行几秒钟后,我剩下的是一个空的日志文件。我将如何制作一个旋转的日志文件处理程序,以将已完成的文件移动到设备上的其他位置(更具体地说是外部存储)?请注意,我将backupCount设置为10,并重写了emit函数来调用doRollover

谢谢!

0 个答案:

没有答案