提交 edaa0663 编写于 作者: W wuzewu

Add exception logging mechanism

上级 6fe29659
......@@ -52,3 +52,4 @@ CONF_HOME = _get_sub_home('conf')
THIRD_PARTY_HOME = _get_sub_home('thirdparty')
TMP_HOME = _get_sub_home('tmp')
SOURCES_HOME = _get_sub_home('sources')
LOG_HOME = _get_sub_home('log')
......@@ -16,6 +16,7 @@
import os
import shutil
import sys
import traceback
from collections import OrderedDict
from typing import List
......@@ -216,8 +217,12 @@ class LocalModuleManager(object):
if os.path.exists(module_dir):
try:
module = self._local_modules[name] = HubModule.load(module_dir)
except:
log.logger.warning('An error was encountered while loading {}'.format(name))
except Exception as e:
msg = traceback.format_exc()
file = utils.record(msg)
log.logger.warning(
'An error was encountered while loading {}. Detailed error information can be found in the {}.'.
format(name, file))
if not module:
return None
......@@ -236,8 +241,12 @@ class LocalModuleManager(object):
fulldir = os.path.join(self.home, subdir)
try:
self._local_modules[subdir] = HubModule.load(fulldir)
except:
log.logger.warning('An error was encountered while loading {}'.format(subdir))
except Exception as e:
msg = traceback.format_exc()
file = utils.record(msg)
log.logger.warning(
'An error was encountered while loading {}. Detailed error information can be found in the {}.'.
format(subdir, file))
return [module for module in self._local_modules.values()]
......
......@@ -17,6 +17,7 @@ import inspect
import importlib
import os
import sys
import traceback
from collections import OrderedDict
from typing import List
......@@ -67,8 +68,13 @@ class GitSource(object):
self.repo.remote().pull(self.repo.branches[0])
# reload modules
self.load_hub_modules()
except:
log.logger.warning('An error occurred while update {}'.format(self.path))
except Exception as e:
self.hub_modules = OrderedDict()
msg = traceback.format_exc()
file = utils.record(msg)
log.logger.warning(
'An error occurred while update {}. Detailed error information can be found in the {}.'.format(
self.path, file))
def load_hub_modules(self):
if 'hubconf' in sys.modules:
......@@ -81,9 +87,13 @@ class GitSource(object):
_item = py_module.__dict__[_item]
if issubclass(_item, RunModule):
self.hub_modules[_item.name] = _item
except:
except Exception as e:
self.hub_modules = OrderedDict()
log.logger.warning('An error occurred while loading {}'.format(self.path))
msg = traceback.format_exc()
file = utils.record(msg)
log.logger.warning(
'An error occurred while loading {}. Detailed error information can be found in the {}.'.format(
self.path, file))
sys.path.remove(self.path)
......
......@@ -281,3 +281,16 @@ def md5(text: str):
'''
md5code = hashlib.md5(text.encode())
return md5code.hexdigest()
def record(msg: str) -> str:
'''
'''
logfile = os.path.join(hubenv.LOG_HOME, time.strftime('%Y%m%d.log'))
with open(logfile, 'a') as file:
file.write('=' * 50 + '\n')
file.write('Record at ' + time.strftime('%Y-%m-%d %H:%M:%S') + '\n')
file.write('=' * 50 + '\n')
file.write(str(msg) + '\n' * 3)
return logfile
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册