def test_context():
    with tagged_logger.context(ta(user="******", ip="127.0.0.1")):
        tagged_logger.log("{user} is from {ip}")
    tagged_logger.log("random message")
    record = tagged_logger.get_latest(user="******")
    assert set(record.tags) == set(["user:foo", "ip:127.0.0.1"])
    assert record.attrs == {"user": "******", "ip": "127.0.0.1"}
def test_expire_integer():
    """
    expire parameter can be an integer
    """
    tagged_logger.log("+1 second", ts=datetime.datetime(2012, 1, 1), expire=1)
    record = tagged_logger.get_latest()
    assert record.expire == pytz.utc.localize(datetime.datetime(2012, 1, 1, 0, 0, 1))
def test_expire_timedelta():
    """
    expire parameter can be a timedelta
    """
    tagged_logger.log("+1 second", ts=datetime.datetime(2012, 1, 1), expire=datetime.timedelta(seconds=1))
    record = tagged_logger.get_latest()
    assert record.expire == pytz.utc.localize(datetime.datetime(2012, 1, 1, 0, 0, 1))
def test_manual_injection():
    tagged_logger.add_tagging_attrs(ta(user="******"), ip="127.0.0.1")
    tagged_logger.log("{user} is from {ip}")
    tagged_logger.rm_tagging_attrs(ta(user="******"), ip="127.0.0.1")
    tagged_logger.log("random message")
    record = tagged_logger.get_latest(user="******")
    assert set(record.tags) == set(["user:foo", "ip:127.0.0.1"])
    assert record.attrs == {"user": "******", "ip": "127.0.0.1"}
def test_context_attrs_dict():
    """
    dictionary log message can be extended with attributes
    """
    with tagged_logger.context(remote_addr='127.0.0.1'):
        tagged_logger.log('foo bar')
    record = tagged_logger.get_latest()
    assert record.message == 'foo bar'
    assert record.attrs['remote_addr'] == '127.0.0.1'
    assert record.message == 'foo bar'
def test_implicit_timestamps():
    ts = datetime.datetime(2012, 1, 1, tzinfo=pytz.utc)
    tagged_logger.log('random action', ts=ts)
    record = tagged_logger.get_latest()
    assert record.ts == ts
def test_message_stores_tags():
    tagged_logger.log('foo created', tags=['foo',])
    record = tagged_logger.get_latest()
    assert record.tags == ['foo', ]
def test_attrs_interpolate_message():
    tagged_logger.log('{user} logged in', user='******')
    record = tagged_logger.get_latest()
    assert str(record) == 'foo logged in'
def test_attrs_with_message():
    tagged_logger.log('user logged in', user_name='foo')
    record = tagged_logger.get_latest()
    assert record.message == 'user logged in'
    assert record.attrs['user_name'] == 'foo'
def test_attrs():
    tagged_logger.log('sample message', foo='bar')
    record = tagged_logger.get_latest()
    assert record.attrs['foo'] == 'bar'
def test_extra_arguments():
    tagged_logger.log('{user}', user='******', user_email='*****@*****.**')
    record = tagged_logger.get_latest()
    assert str(record) == 'foo ([email protected])'
def test_missing_arguments():
    tagged_logger.log('{user} {ip}', user='******')
    record = tagged_logger.get_latest()
    assert str(record) == 'foo (undefined)'
def test_context_rm_attrs():
    tagged_logger.add_attrs(remote_addr='127.0.0.1')
    tagged_logger.rm_attrs('remote_addr', 'baz')
    tagged_logger.log('sample message')
    record = tagged_logger.get_latest()
    assert record.attrs == {}