def do_report(pk, levelname, order_by): """ Return a list of recorded log messages for the WorkChain with pk=PK """ from aiida.backends.utils import load_dbenv, is_dbenv_loaded if not is_dbenv_loaded(): load_dbenv() from aiida.orm.backend import construct from aiida.orm.log import OrderSpecifier, ASCENDING, DESCENDING backend = construct() order_by = [OrderSpecifier(order_by, ASCENDING)] filters = { 'objpk': pk, } if levelname: filters['levelname'] = levelname entries = backend.log.find(filter_by=filters, order_by=order_by) object_ids = [entry.id for entry in entries] levelnames = [len(entry.levelname) for entry in entries] width_id = len(str(max(object_ids))) width_levelname = max(levelnames) for entry in entries: print '{time:%Y-%m-%d %H:%M:%S} [{id:<{width_id}} | {levelname:>{width_levelname}}]: {message}'.format( id=entry.id, levelname=entry.levelname, message=entry.message, time=entry.time, width_id=width_id, width_levelname=width_levelname)
def get_report_messages(pk, depth, levelname): backend = construct() filters = { 'objpk': pk, } entries = backend.log.find(filter_by=filters) entries = [ entry for entry in entries if LOG_LEVEL_MAPPING[entry.levelname] >= LOG_LEVEL_MAPPING[levelname] ] return [(_, depth) for _ in entries]
def setUp(self): super(TestBackendLog, self).setUp() self._backend = construct() self._record = { 'time': now(), 'loggername': 'loggername', 'levelname': logging.getLevelName(LOG_LEVEL_REPORT), 'objname': 'objname', 'objpk': 0, 'message': 'This is a template record message', 'metadata': { 'content': 'test' }, }
def get_report_messages(pk, depth, levelname): backend = construct() filters = { 'objpk': pk, } if levelname: filters['levelname'] = levelname entries = backend.log.find(filter_by=filters) if entries is None or len(entries) == 0: return [] else: return [(_, depth) for _ in entries]
def emit(self, record): # If this is reached before a backend is defined, simply pass if not is_dbenv_loaded(): return from aiida.orm.backend import construct from django.core.exceptions import ImproperlyConfigured try: backend = construct() backend.log.create_entry_from_record(record) except ImproperlyConfigured: # Probably, the logger was called without the # Django settings module loaded. Then, # This ignore should be a no-op. pass except Exception: # To avoid loops with the error handler, I just print. # Hopefully, though, this should not happen! import traceback traceback.print_exc()
def test_create_backend(self): """ Test creating the backend specific backend instance """ backend = construct()