|
@@ -92,10 +92,10 @@ class Handler:
|
|
self.stream.write(msg.encode("UTF-8"))
|
|
self.stream.write(msg.encode("UTF-8"))
|
|
self.flush()
|
|
self.flush()
|
|
except:
|
|
except:
|
|
- self.handleError(record)
|
|
|
|
|
|
+ self.handleError()
|
|
|
|
|
|
#noinspection PyUnusedLocal
|
|
#noinspection PyUnusedLocal
|
|
- def handleError(self, record):
|
|
|
|
|
|
+ def handleError(self):
|
|
ei = sys.exc_info()
|
|
ei = sys.exc_info()
|
|
traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
|
|
traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
|
|
del ei
|
|
del ei
|
|
@@ -199,6 +199,17 @@ class RotatingFileHandler(FileHandler):
|
|
FileHandler.emit(self, record)
|
|
FileHandler.emit(self, record)
|
|
self.doRollover()
|
|
self.doRollover()
|
|
|
|
|
|
|
|
+ def removeAndRename(self, sfn, dfn):
|
|
|
|
+ if os.path.exists(dfn):
|
|
|
|
+ try:
|
|
|
|
+ os.remove(dfn)
|
|
|
|
+ except OSError:
|
|
|
|
+ why = sys.exc_info()[1]
|
|
|
|
+ # catch race condition (already deleted)
|
|
|
|
+ if why.args[0] != errno.ENOENT:
|
|
|
|
+ raise
|
|
|
|
+ os.rename(sfn, dfn)
|
|
|
|
+
|
|
def doRollover(self):
|
|
def doRollover(self):
|
|
"""
|
|
"""
|
|
Do a rollover, as described in __init__().
|
|
Do a rollover, as described in __init__().
|
|
@@ -215,25 +226,9 @@ class RotatingFileHandler(FileHandler):
|
|
sfn = "%s.%d" % (self.baseFilename, i)
|
|
sfn = "%s.%d" % (self.baseFilename, i)
|
|
dfn = "%s.%d" % (self.baseFilename, i + 1)
|
|
dfn = "%s.%d" % (self.baseFilename, i + 1)
|
|
if os.path.exists(sfn):
|
|
if os.path.exists(sfn):
|
|
- if os.path.exists(dfn):
|
|
|
|
- try:
|
|
|
|
- os.remove(dfn)
|
|
|
|
- except OSError:
|
|
|
|
- why = sys.exc_info()[1]
|
|
|
|
- # catch race condition (already deleted)
|
|
|
|
- if why.args[0] != errno.ENOENT:
|
|
|
|
- raise
|
|
|
|
- os.rename(sfn, dfn)
|
|
|
|
|
|
+ self.removeAndRename(sfn, dfn)
|
|
dfn = self.baseFilename + ".1"
|
|
dfn = self.baseFilename + ".1"
|
|
- if os.path.exists(dfn):
|
|
|
|
- try:
|
|
|
|
- os.remove(dfn)
|
|
|
|
- except OSError:
|
|
|
|
- why = sys.exc_info()[1]
|
|
|
|
- # catch race condition (already deleted)
|
|
|
|
- if why.args[0] != errno.ENOENT:
|
|
|
|
- raise
|
|
|
|
- os.rename(self.baseFilename, dfn)
|
|
|
|
|
|
+ self.removeAndRename(self.baseFilename, dfn)
|
|
self.stream = open(self.baseFilename, 'w')
|
|
self.stream = open(self.baseFilename, 'w')
|
|
|
|
|
|
class LogRecord:
|
|
class LogRecord:
|
|
@@ -335,7 +330,7 @@ class SyslogHandler(Handler):
|
|
except UnicodeError:
|
|
except UnicodeError:
|
|
syslog.syslog(msg.encode("UTF-8"))
|
|
syslog.syslog(msg.encode("UTF-8"))
|
|
except:
|
|
except:
|
|
- self.handleError(record)
|
|
|
|
|
|
+ self.handleError()
|
|
|
|
|
|
def getLogger(level=None):
|
|
def getLogger(level=None):
|
|
return Logger(level)
|
|
return Logger(level)
|