Browse Source

suppress FileNotFoundError for concurrency

tags/v1.1.0
liangyongxiong 5 years ago
parent
commit
b39854d3ea
1 changed files with 18 additions and 12 deletions
  1. +18
    -12
      mindinsight/utils/log.py

+ 18
- 12
mindinsight/utils/log.py View File

@@ -51,21 +51,27 @@ class MultiCompatibleRotatingFileHandler(RotatingFileHandler):
with open(self.baseFilename, 'a') as file_pointer: with open(self.baseFilename, 'a') as file_pointer:
fcntl.lockf(file_pointer.fileno(), fcntl.LOCK_EX) fcntl.lockf(file_pointer.fileno(), fcntl.LOCK_EX)


if self.backupCount > 0:
self.rolling_rename()
try:
if self.backupCount > 0:
self.rolling_rename()


dfn = self.rotation_filename(self.baseFilename + ".1")
if os.path.exists(dfn):
os.remove(dfn)
# dfn stands for destinated file name according to source codes in RotatingFileHandler.doRollover()
dfn = self.rotation_filename(self.baseFilename + ".1")
if os.path.exists(dfn):
os.remove(dfn)


os.chmod(self.baseFilename, stat.S_IREAD)
self.rotate(self.baseFilename, dfn)
os.chmod(self.baseFilename, stat.S_IREAD)
self.rotate(self.baseFilename, dfn)


with open(self.baseFilename, 'a'):
os.chmod(self.baseFilename, stat.S_IREAD | stat.S_IWRITE)
with open(self.baseFilename, 'a'):
os.chmod(self.baseFilename, stat.S_IREAD | stat.S_IWRITE)


if not self.delay:
self.stream = self._open()
if not self.delay:
self.stream = self._open()

except FileNotFoundError:
# Suppress this exception for concurrency.
pass


def _open(self): def _open(self):
"""Open the current base file with the (original) mode and encoding.""" """Open the current base file with the (original) mode and encoding."""
@@ -215,7 +221,7 @@ def setup_logger(sub_module, log_name, **kwargs):
os.makedirs(logfile_dir, mode=mode, exist_ok=True) os.makedirs(logfile_dir, mode=mode, exist_ok=True)


logfile_handler = MultiCompatibleRotatingFileHandler( logfile_handler = MultiCompatibleRotatingFileHandler(
filename=os.path.join(logfile_dir, '{}.log'.format(log_name)),
filename=os.path.join(logfile_dir, '{}.{}.log'.format(log_name, settings.PORT)),
maxBytes=max_bytes, maxBytes=max_bytes,
backupCount=backup_count, backupCount=backup_count,
encoding='utf8' encoding='utf8'


Loading…
Cancel
Save