提交 edaa0663 编写于 作者: W wuzewu

Add exception logging mechanism

上级 6fe29659
...@@ -52,3 +52,4 @@ CONF_HOME = _get_sub_home('conf') ...@@ -52,3 +52,4 @@ CONF_HOME = _get_sub_home('conf')
THIRD_PARTY_HOME = _get_sub_home('thirdparty') THIRD_PARTY_HOME = _get_sub_home('thirdparty')
TMP_HOME = _get_sub_home('tmp') TMP_HOME = _get_sub_home('tmp')
SOURCES_HOME = _get_sub_home('sources') SOURCES_HOME = _get_sub_home('sources')
LOG_HOME = _get_sub_home('log')
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
import os import os
import shutil import shutil
import sys import sys
import traceback
from collections import OrderedDict from collections import OrderedDict
from typing import List from typing import List
...@@ -216,8 +217,12 @@ class LocalModuleManager(object): ...@@ -216,8 +217,12 @@ class LocalModuleManager(object):
if os.path.exists(module_dir): if os.path.exists(module_dir):
try: try:
module = self._local_modules[name] = HubModule.load(module_dir) module = self._local_modules[name] = HubModule.load(module_dir)
except: except Exception as e:
log.logger.warning('An error was encountered while loading {}'.format(name)) 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: if not module:
return None return None
...@@ -236,8 +241,12 @@ class LocalModuleManager(object): ...@@ -236,8 +241,12 @@ class LocalModuleManager(object):
fulldir = os.path.join(self.home, subdir) fulldir = os.path.join(self.home, subdir)
try: try:
self._local_modules[subdir] = HubModule.load(fulldir) self._local_modules[subdir] = HubModule.load(fulldir)
except: except Exception as e:
log.logger.warning('An error was encountered while loading {}'.format(subdir)) 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()] return [module for module in self._local_modules.values()]
......
...@@ -17,6 +17,7 @@ import inspect ...@@ -17,6 +17,7 @@ import inspect
import importlib import importlib
import os import os
import sys import sys
import traceback
from collections import OrderedDict from collections import OrderedDict
from typing import List from typing import List
...@@ -67,8 +68,13 @@ class GitSource(object): ...@@ -67,8 +68,13 @@ class GitSource(object):
self.repo.remote().pull(self.repo.branches[0]) self.repo.remote().pull(self.repo.branches[0])
# reload modules # reload modules
self.load_hub_modules() self.load_hub_modules()
except: except Exception as e:
log.logger.warning('An error occurred while update {}'.format(self.path)) 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): def load_hub_modules(self):
if 'hubconf' in sys.modules: if 'hubconf' in sys.modules:
...@@ -81,9 +87,13 @@ class GitSource(object): ...@@ -81,9 +87,13 @@ class GitSource(object):
_item = py_module.__dict__[_item] _item = py_module.__dict__[_item]
if issubclass(_item, RunModule): if issubclass(_item, RunModule):
self.hub_modules[_item.name] = _item self.hub_modules[_item.name] = _item
except: except Exception as e:
self.hub_modules = OrderedDict() 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) sys.path.remove(self.path)
......
...@@ -281,3 +281,16 @@ def md5(text: str): ...@@ -281,3 +281,16 @@ def md5(text: str):
''' '''
md5code = hashlib.md5(text.encode()) md5code = hashlib.md5(text.encode())
return md5code.hexdigest() 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.
先完成此消息的编辑!
想要评论请 注册