0001-base-add-context-method-to-ProxyLogger-37491.patch
passerelle/base/models.py | ||
---|---|---|
755 | 755 | |
756 | 756 | |
757 | 757 |
class ProxyLogger(object): |
758 | ||
759 |
def __init__(self, connector): |
|
758 |
def __init__(self, connector, extra=None): |
|
760 | 759 |
self.connector = connector |
761 | 760 |
self.appname = connector.get_connector_slug() |
762 | 761 |
self.slug = connector.slug |
762 |
self.extra = extra or {} |
|
763 | 763 |
logger_name = 'passerelle.resource.%s.%s' % (self.appname, self.slug) |
764 | 764 |
self._logger = logging.getLogger(logger_name) |
765 | 765 |
self._logger.setLevel(connector.log_level) |
766 | 766 | |
767 |
def context(self, **kwargs): |
|
768 |
return self.__class__(self.connector, extra=dict(self.extra or {}, **kwargs)) |
|
769 | ||
767 | 770 |
@property |
768 | 771 |
def level(self): |
769 | 772 |
return self._logger.getEffectiveLevel() |
... | ... | |
805 | 808 |
attr['appname'] = self.appname |
806 | 809 |
attr['slug'] = self.slug |
807 | 810 | |
808 |
extra = kwargs.get('extra', {}) |
|
811 |
extra = (self.extra or {}).copy() |
|
812 |
extra.update(kwargs.get('extra', {})) |
|
809 | 813 |
request = extra.get('request') |
810 | 814 | |
811 | 815 |
def is_json_serializable(value): |
tests/test_proxylogger.py | ||
---|---|---|
229 | 229 |
assert last_count4 == last_count3 + 1 |
230 | 230 |
assert ResourceLog.objects.latest('id').level == 'info' |
231 | 231 |
assert ResourceLog.objects.latest('id').message == 'GET http://example.net/ (=> 200)' |
232 | ||
233 | ||
234 |
def test_proxy_logger_context(db, connector): |
|
235 |
base_logger = ProxyLogger(connector) |
|
236 |
base_logger.debug('test') |
|
237 |
log = ResourceLog.objects.latest('id') |
|
238 |
assert log.extra == {} |
|
239 | ||
240 |
context1_logger = base_logger.context(extra1='toto') |
|
241 |
context1_logger.debug('test') |
|
242 |
log = ResourceLog.objects.latest('id') |
|
243 |
assert log.extra == {'extra1': 'toto'} |
|
244 | ||
245 |
# Check extra is updated not overwritten |
|
246 |
context2_logger = context1_logger.context(extra2='titi') |
|
247 |
context2_logger.debug('test') |
|
248 |
log = ResourceLog.objects.latest('id') |
|
249 |
assert log.extra == {'extra1': 'toto', 'extra2': 'titi'} |
|
250 | ||
251 |
# Check other logger were not modified |
|
252 |
context1_logger.debug('test') |
|
253 |
log = ResourceLog.objects.latest('id') |
|
254 |
assert log.extra == {'extra1': 'toto'} |
|
255 | ||
256 |
base_logger.debug('test') |
|
257 |
log = ResourceLog.objects.latest('id') |
|
258 |
assert log.extra == {} |
|
232 |
- |