diff --git a/jina/drivers/control.py b/jina/drivers/control.py index f02ae867ab3c8..f1299c1e30f5b 100644 --- a/jina/drivers/control.py +++ b/jina/drivers/control.py @@ -3,6 +3,8 @@ import time +from google.protobuf.json_format import MessageToJson + from . import BaseDriver from .querylang.queryset.dunderkey import dunder_get from ..excepts import UnknownControlCommand, RuntimeTerminated, NoExplicitMessage @@ -22,7 +24,7 @@ def envelope(self) -> 'jina_pb2.EnvelopeProto': class LogInfoDriver(BaseControlDriver): """Log output the request info""" - def __init__(self, key: str = 'request', *args, **kwargs): + def __init__(self, key: str = 'request', json: bool = True, *args, **kwargs): """ :param key: (str) that represents a first level or nested key in the dict :param args: @@ -30,9 +32,16 @@ def __init__(self, key: str = 'request', *args, **kwargs): """ super().__init__(*args, **kwargs) self.key = key + self.json = json def __call__(self, *args, **kwargs): - self.logger.info(dunder_get(self.msg.as_pb_object, self.key)) + data = dunder_get(self.msg.as_pb_object, self.key) + if self.json: + self.logger.info( + MessageToJson(data) + ) + else: + self.logger.info(data) class WaitDriver(BaseControlDriver):