qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] python/qemu/qmp.py: QMP debug with VM label


From: Eduardo Habkost
Subject: Re: [PATCH v2] python/qemu/qmp.py: QMP debug with VM label
Date: Thu, 12 Mar 2020 13:30:13 -0400

On Thu, Mar 12, 2020 at 04:05:47PM +0200, Oksana Vohchana wrote:
> QEMUMachine writes some messages to the default logger.
> But it sometimes hard to read the output if we have requests to
> more than one VM.
> This patch adds a label to the logger in the debug mode.
> 
> Signed-off-by: Oksana Vohchana <address@hidden>
> 
> ---
> v2:
>  - Instead of shown the label in the message it provides the label
>    only in the debug logger information
> ---
>  python/qemu/machine.py | 2 +-
>  python/qemu/qmp.py     | 5 ++++-
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/python/qemu/machine.py b/python/qemu/machine.py
> index 183d8f3d38..d0aa774c1c 100644
> --- a/python/qemu/machine.py
> +++ b/python/qemu/machine.py
> @@ -270,7 +270,7 @@ class QEMUMachine(object):
>                  self._vm_monitor = os.path.join(self._sock_dir,
>                                                  self._name + "-monitor.sock")
>                  self._remove_files.append(self._vm_monitor)
> -            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, 
> server=True)
> +            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, 
> server=True, nickname=self._name)
>  
>      def _post_launch(self):
>          if self._qmp:
> diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py
> index f40586eedd..d58b18c304 100644
> --- a/python/qemu/qmp.py
> +++ b/python/qemu/qmp.py
> @@ -46,7 +46,7 @@ class QEMUMonitorProtocol:
>      #: Logger object for debugging messages
>      logger = logging.getLogger('QMP')

This will create a single logger instance.

>  
> -    def __init__(self, address, server=False):
> +    def __init__(self, address, server=False, nickname=None):
>          """
>          Create a QEMUMonitorProtocol class.
>  
> @@ -62,6 +62,7 @@ class QEMUMonitorProtocol:
>          self.__address = address
>          self.__sock = self.__get_sock()
>          self.__sockfile = None
> +        self._nickname = nickname
>          if server:
>              self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
>              self.__sock.bind(self.__address)
> @@ -188,6 +189,8 @@ class QEMUMonitorProtocol:
>          @return QMP response as a Python dict or None if the connection has
>                  been closed
>          """
> +        if self._nickname:
> +            self.logger.name = 'QMP.{}'.format(self._nickname)

This will change the name of that single instance and affect
every single QEMUMonitorProtocol object.  Please don't do that.

You can just do:

    self.logger = logging.getLogger('QMP').getChild(self._nickname)

at __init__().


>          self.logger.debug(">>> %s", qmp_cmd)
>          try:
>              self.__sock.sendall(json.dumps(qmp_cmd).encode('utf-8'))
> -- 
> 2.21.1
> 

-- 
Eduardo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]