| 12345678910111213141516171819202122232425262728293031323334353637383940 | # coding:utf-8import codecsimport datetimeimport osfrom logging.handlers import BaseRotatingHandlerclass MidnightRotatingFileHandler(BaseRotatingHandler):    def __init__(self, filename):        self.suffix = "%Y-%m-%d"        self.date = datetime.date.today()        super(BaseRotatingHandler, self).__init__(filename, mode='a', encoding=None, delay=0)    def shouldRollover(self, record):        return self.date != datetime.date.today()    def doRollover(self):        if self.stream:            self.stream.close()            self.stream = None        self.date = datetime.date.today()    def _open(self):        filename = '%s.%s' % (self.baseFilename, self.date.strftime(self.suffix))        if self.encoding is None:            stream = open(filename, self.mode)        else:            stream = codecs.open(filename, self.mode, self.encoding)        if os.path.exists(self.baseFilename):            try:                os.remove(self.baseFilename)            except OSError:                pass        try:            os.symlink(filename, self.baseFilename)        except OSError:            pass        return stream
 |