Из-за многострочных трассировок я получаю несколько строк журнала для одной и той же ошибки в datadog. Как исправить многострочные трассировки.
Пример кода сервера
Код: Выделить всё
class UnaryService(pb2_grpc.UnaryServicer):
def __init__(self, *args, **kwargs):
pass
def GetServerResponse(self, request, context):
message = request.message
raise Exception("error raised")
- Нет возврата: Я пробовал установка кода состояния, сведений об ошибке в контексте gRPC и возврат None, когда вместо возникновения исключения возникает исключение. Это сработало в том смысле, что теперь трассировки не регистрируются, но у меня возникла проблема с трассировкой datadog. Запрос считался успешным, даже если он потерпел неудачу. Я также попытался добавить теги в текущий диапазон, но он все равно не был помечен как неудачный.
- Исправление print_exc() >: Другим решением, которое я предложил, было исправление функции трассировки.print_exc(). Это тоже работает, но мне это решение не нравится, так как если что-то изменится в библиотеке трассировки или grpc, это может повлиять.
Код: Выделить всё
def patched_print_exc(*args, **kwargs):
tb = traceback.format_exc()
logger.error("error traceback: ", tb)
traceback.print_exc = patched_print_exc
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/778 ... -traceback