Ejemplo n.º 1
0
 def run(self):
     try:
         log_context.update(childField='titi')
         fields = log_context.as_dict()
         assert 'childField' in fields
     except (AssertionError, Exception):
         self.case.shm['thread_exc_info'] = sys.exc_info()
Ejemplo n.º 2
0
def context():
    log_context.update(rid=42)
    yield log_context
    try:
        del log_context._stack
    except AttributeError:
        pass
Ejemplo n.º 3
0
 def process_request(self, request):
     context.clear()
     extractor = settings.PYLOGCTX_REQUEST_EXTRACTOR
     try:
         context.update(**extractor(request))
     except Exception:
         logger.exception()
Ejemplo n.º 4
0
def test_lazy_accessor_deepupdate_nested(context):
    log_context.remove('rid')

    from pylogctx import LazyAccessor

    class MyObject(object):
        value = 'foo'

        def __repr__(self):
            return 'foo'

    instance = MyObject()
    lazy_instance = LazyAccessor(instance, 'value')

    log_context.update(parent={"lazy_instance": lazy_instance,
                               "foo": "bar"})

    fields = log_context.as_dict()
    assert str(fields['parent']['lazy_instance']) == 'foo'

    # Check value change for LazyAccessor
    instance.value = 'bar'

    fields = log_context.as_dict()
    assert str(fields['parent']['lazy_instance']) == 'bar'
Ejemplo n.º 5
0
def context():
    log_context.update(rid=42)
    yield log_context
    try:
        del log_context._stack
    except AttributeError:
        pass
Ejemplo n.º 6
0
def test_adapter_with_parameters(context):
    from pylogctx import log_adapter

    class Parent(object):
        pass

    class Child(Parent):
        pass

    @log_adapter(Parent)
    def parent_log_maker(instance, with_child=False):
        fields = dict(parent=id(instance))
        if with_child:
            fields.update({"child": {'baby2': 'tutu'}})
        return fields

    log_context.update(child={'baby1': 'toto'})

    with context.cm_update_one(Child(), with_child=True):
        data = context.as_dict()
        assert 'parent' in data
        assert 'child' in data
        assert 'baby1' in data['child']
        assert 'baby2' in data['child']

    context.update_one(Child(), with_child=True)
    data = context.as_dict()
    assert 'parent' in data
    assert 'child' in data
    assert 'baby1' in data['child']
    assert 'baby2' in data['child']
Ejemplo n.º 7
0
def test_adapter_with_parameters(context):
    from pylogctx import log_adapter

    class Parent(object):
        pass

    class Child(Parent):
        pass

    @log_adapter(Parent)
    def parent_log_maker(instance, with_child=False):
        fields = dict(parent=id(instance))
        if with_child:
            fields.update({"child": {'baby2': 'tutu'}})
        return fields

    log_context.update(child={'baby1': 'toto'})

    with context.cm_update_one(Child(), with_child=True):
        data = context.as_dict()
        assert 'parent' in data
        assert 'child' in data
        assert 'baby1' in data['child']
        assert 'baby2' in data['child']

    context.update_one(Child(), with_child=True)
    data = context.as_dict()
    assert 'parent' in data
    assert 'child' in data
    assert 'baby1' in data['child']
    assert 'baby2' in data['child']
Ejemplo n.º 8
0
 def run(self):
     try:
         log_context.update(childField='titi')
         fields = log_context.as_dict()
         assert 'childField' in fields
     except (AssertionError, Exception):
         self.case.shm['thread_exc_info'] = sys.exc_info()
Ejemplo n.º 9
0
def test_update_clear_remove(context):
    log_context.update(myField='toto', myOtherField='titi')
    fields = log_context.as_dict()
    assert 'myField' in fields
    assert 'myOtherField' in fields

    log_context.remove('myOtherField')
    fields = log_context.as_dict()
    assert 'myField' in fields
    assert 'myOtherField' not in fields

    log_context.clear()
    fields = log_context.as_dict()
    assert 'myField' not in fields
Ejemplo n.º 10
0
def test_update_clear_remove(context):
    log_context.update(myField='toto', myOtherField='titi')
    fields = log_context.as_dict()
    assert 'myField' in fields
    assert 'myOtherField' in fields

    log_context.remove('myOtherField')
    fields = log_context.as_dict()
    assert 'myField' in fields
    assert 'myOtherField' not in fields

    log_context.clear()
    fields = log_context.as_dict()
    assert 'myField' not in fields
Ejemplo n.º 11
0
def test_deep_update_dict(context):
    log_context.remove('rid')

    # Value to dict update override
    log_context.update(myField={'toto': {'tata1': {'titi1': 'tutu'}}})
    fields = log_context.as_dict()
    assert fields == {'myField': {'toto': {'tata1': {'titi1': 'tutu'}}}}

    # Update tata1 to add titi2
    log_context.update(myField={'toto': {'tata1': {'titi2': 'tutu'}}})
    fields = log_context.as_dict()
    assert fields == {
        'myField': {
            'toto': {
                'tata1': {
                    'titi1': 'tutu',
                    'titi2': 'tutu'
                }
            }
        }
    }

    # Override value `tata1/titi1`
    log_context.update(myField={'toto': {'tata1': {'titi1': 'val'}}})
    fields = log_context.as_dict()
    assert fields == {
        'myField': {
            'toto': {
                'tata1': {
                    'titi1': 'val',
                    'titi2': 'tutu'
                }
            }
        }
    }
Ejemplo n.º 12
0
def test_adapter():
    from pylogctx import context, log_adapter

    # To fill save context
    context.update(toto="tata")
    fields = context.as_dict()
    assert 'toto' in fields

    app = Celery(task_cls='pylogctx.celery.LoggingTask')

    @log_adapter(app.Task)
    def adapter(task):
        return {
            'celeryTaskId': task.request.id,
            'celeryTask': task.name
        }

    @app.task
    def my_task():
        return context.as_dict()

    result = my_task.apply()
    if VERSION.major < 4:
        result.maybe_reraise()
    else:
        result.maybe_throw()

    fields = result.result
    assert 'celeryTask' in fields
    assert 'celeryTaskId' in fields

    # Check context is the same before task was started
    fields = context.as_dict()
    assert 'toto' in fields

    context.clear()  # Clear context
Ejemplo n.º 13
0
def test_lazy_accessor_deepupdate_nested(context):
    log_context.remove('rid')

    from pylogctx import LazyAccessor

    class MyObject(object):
        value = 'foo'

        def __repr__(self):
            return 'foo'

    instance = MyObject()
    lazy_instance = LazyAccessor(instance, 'value')

    log_context.update(parent={"lazy_instance": lazy_instance, "foo": "bar"})

    fields = log_context.as_dict()
    assert str(fields['parent']['lazy_instance']) == 'foo'

    # Check value change for LazyAccessor
    instance.value = 'bar'

    fields = log_context.as_dict()
    assert str(fields['parent']['lazy_instance']) == 'bar'
Ejemplo n.º 14
0
def test_deep_update_dict(context):
    log_context.remove('rid')

    # Value to dict update override
    log_context.update(myField={'toto': {'tata1': {'titi1': 'tutu'}}})
    fields = log_context.as_dict()
    assert fields == {'myField': {'toto': {'tata1': {'titi1': 'tutu'}}}}

    # Update tata1 to add titi2
    log_context.update(myField={'toto': {'tata1': {'titi2': 'tutu'}}})
    fields = log_context.as_dict()
    assert fields == {
        'myField': {'toto': {'tata1': {'titi1': 'tutu', 'titi2': 'tutu'}}}}

    # Override value `tata1/titi1`
    log_context.update(myField={'toto': {'tata1': {'titi1': 'val'}}})
    fields = log_context.as_dict()

    assert fields == {
        'myField': {'toto': {'tata1': {'titi1': 'val',
                                       'titi2': 'tutu'}}}}
Ejemplo n.º 15
0
 def my_task():
     context.update(taskField='RUNNED')
     logger = get_task_logger(current_task().name)
     logger.info("I log!")
     return context.as_dict()
Ejemplo n.º 16
0
 def before_call(self):
     from pylogctx import context
     context.update(taskField='RUNNED')
Ejemplo n.º 17
0
 def my_task():
     context.update(taskField='RUNNED')
     logger = get_task_logger(current_task.name)
     logger.info("I log!")
     return context.as_dict()
Ejemplo n.º 18
0
 def process_request(self, request):
     context.clear()
     try:
         context.update(request)
     except AdapterNotFound:
         logger.info("Can't adapt %s for log.", request.__class__.__name__)