mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-28 04:02:38 +00:00
remove unseriable args in log_call_deferred passed to start_action
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
This commit is contained in:
parent
9da1456e5b
commit
5803d9999d
@ -297,7 +297,7 @@ class LogCallDeferredTests(TestCase):
|
|||||||
self.assertThat(
|
self.assertThat(
|
||||||
f(4), succeeded(Equals(16)))
|
f(4), succeeded(Equals(16)))
|
||||||
msg = logger.messages[0]
|
msg = logger.messages[0]
|
||||||
assertContainsFields(self, msg, {"args": (4,)})
|
assertContainsFields(self, msg, {"args": {'arg_0': 4}})
|
||||||
|
|
||||||
@capture_logging(
|
@capture_logging(
|
||||||
lambda self, logger:
|
lambda self, logger:
|
||||||
@ -328,5 +328,5 @@ class LogCallDeferredTests(TestCase):
|
|||||||
return base ** exp
|
return base ** exp
|
||||||
self.assertThat(f(10, 2, message="an exponential function"), succeeded(Equals(100)))
|
self.assertThat(f(10, 2, message="an exponential function"), succeeded(Equals(100)))
|
||||||
msg = logger.messages[0]
|
msg = logger.messages[0]
|
||||||
assertContainsFields(self, msg, {"args": (10, 2)})
|
assertContainsFields(self, msg, {"args": {'arg_0': 10, 'arg_1': 2}})
|
||||||
assertContainsFields(self, msg, {"kwargs": {"message": "an exponential function"}})
|
assertContainsFields(self, msg, {"kwargs": {"message": "an exponential function"}})
|
||||||
|
@ -91,7 +91,7 @@ from .jsonbytes import (
|
|||||||
AnyBytesJSONEncoder,
|
AnyBytesJSONEncoder,
|
||||||
bytes_to_unicode
|
bytes_to_unicode
|
||||||
)
|
)
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
def validateInstanceOf(t):
|
def validateInstanceOf(t):
|
||||||
@ -315,6 +315,14 @@ class _DestinationParser(object):
|
|||||||
|
|
||||||
_parse_destination_description = _DestinationParser().parse
|
_parse_destination_description = _DestinationParser().parse
|
||||||
|
|
||||||
|
def is_json_serializable(object):
|
||||||
|
try:
|
||||||
|
json.dumps(object)
|
||||||
|
return True
|
||||||
|
except (TypeError, OverflowError):
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def log_call_deferred(action_type):
|
def log_call_deferred(action_type):
|
||||||
"""
|
"""
|
||||||
Like ``eliot.log_call`` but for functions which return ``Deferred``.
|
Like ``eliot.log_call`` but for functions which return ``Deferred``.
|
||||||
@ -325,7 +333,14 @@ def log_call_deferred(action_type):
|
|||||||
# Use the action's context method to avoid ending the action when
|
# Use the action's context method to avoid ending the action when
|
||||||
# the `with` block ends.
|
# the `with` block ends.
|
||||||
kwargs = {k: bytes_to_unicode(True, kw[k]) for k in kw}
|
kwargs = {k: bytes_to_unicode(True, kw[k]) for k in kw}
|
||||||
with start_action(action_type=action_type, args=a, kwargs=kwargs).context():
|
# Remove complex (unserializable) objects from positional args to
|
||||||
|
# prevent eliot from throwing errors when it attempts serialization
|
||||||
|
args = {
|
||||||
|
"arg_" + str(pos): bytes_to_unicode(True, a[pos])
|
||||||
|
for pos in range(len(a))
|
||||||
|
if is_json_serializable(a[pos])
|
||||||
|
}
|
||||||
|
with start_action(action_type=action_type, args=args, kwargs=kwargs).context():
|
||||||
# Use addActionFinish so that the action finishes when the
|
# Use addActionFinish so that the action finishes when the
|
||||||
# Deferred fires.
|
# Deferred fires.
|
||||||
d = maybeDeferred(f, *a, **kw)
|
d = maybeDeferred(f, *a, **kw)
|
||||||
@ -339,3 +354,5 @@ if PY2:
|
|||||||
capture_logging = eliot_capture_logging
|
capture_logging = eliot_capture_logging
|
||||||
else:
|
else:
|
||||||
capture_logging = partial(eliot_capture_logging, encoder_=AnyBytesJSONEncoder)
|
capture_logging = partial(eliot_capture_logging, encoder_=AnyBytesJSONEncoder)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user