| 12345678910111213141516171819202122232425262728293031323334353637383940 | 
							- # coding:utf-8
 
- import codecs
 
- import datetime
 
- import os
 
- from logging.handlers import BaseRotatingHandler
 
- class 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
 
 
  |