Example #1
0
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)
Example #2
0
    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]
Example #3
0
 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'
         },
     }
Example #4
0
    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]
Example #5
0
    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()
Example #6
0
 def test_create_backend(self):
     """
     Test creating the backend specific backend instance
     """
     backend = construct()