[Kimchi-devel] [PATCH] [Kimchi 2/4] Improve log messages printed by the serial console

Lucio Correia luciojhc at linux.vnet.ibm.com
Thu Mar 10 16:20:30 UTC 2016


Reviewed-By: Lucio Correia <luciojhc at linux.vnet.ibm.com>

On 09-03-2016 16:04, Jose Ricardo Ziviani wrote:
>   - Include the process name in the log to highlight messages from
>     different process and thus make is easier to debug.
>
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
>   serialconsole.py | 56 ++++++++++++++++++++++++++------------------------------
>   1 file changed, 26 insertions(+), 30 deletions(-)
>
> diff --git a/serialconsole.py b/serialconsole.py
> index 47f4c2d..74f6b8a 100644
> --- a/serialconsole.py
> +++ b/serialconsole.py
> @@ -27,9 +27,8 @@ import time
>
>   from multiprocessing import Process
>
> -
> -from wok.utils import wok_log
>   from wok.plugins.kimchi import model
> +from wok.utils import wok_log
>
>
>   SOCKET_QUEUE_BACKLOG = 0
> @@ -70,8 +69,6 @@ class SocketServer(Process):
>           self._uri = URI
>           self._server_addr = os.path.join(BASE_DIRECTORY, guest_name)
>           if os.path.exists(self._server_addr):
> -            wok_log.error('Cannot connect to %s due to an existing '
> -                          'connection', guest_name)
>               raise RuntimeError('There is an existing connection to %s' %
>                                  guest_name)
>
> @@ -82,7 +79,8 @@ class SocketServer(Process):
>                                   1)
>           self._socket.bind(self._server_addr)
>           self._socket.listen(SOCKET_QUEUE_BACKLOG)
> -        wok_log.info('socket server to guest %s created', guest_name)
> +        wok_log.info('[%s] socket server to guest %s created', self.name,
> +                     guest_name)
>
>       def run(self):
>           """Implements customized run method from Process.
> @@ -98,7 +96,8 @@ class SocketServer(Process):
>               data = stream.recv(1024)
>
>           except Exception as e:
> -            wok_log.info('Error when reading from console: %s', e.message)
> +            wok_log.info('[%s] Error when reading from console: %s',
> +                         self.name, e.message)
>               return
>
>           # return if no data received or client socket(opaque) is not valid
> @@ -125,11 +124,11 @@ class SocketServer(Process):
>           """
>           libvirt.virEventRegisterDefaultImpl()
>           try:
> -            guest = LibvirtGuest(self._guest_name, self._uri)
> +            guest = LibvirtGuest(self._guest_name, self._uri, self.name)
>
>           except Exception as e:
> -            wok_log.error('Cannot open the guest %s due to %s',
> -                          self._guest_name, e.message)
> +            wok_log.error('[%s] Cannot open the guest %s due to %s',
> +                          self.name, self._guest_name, e.message)
>               self._socket.close()
>               sys.exit(1)
>
> @@ -147,8 +146,8 @@ class SocketServer(Process):
>               pass
>
>           finally:
> -            wok_log.info("Shutting down the socket server to %s console",
> -                         self._guest_name)
> +            wok_log.info("[%s] Shutting down the socket server to %s console",
> +                         self.name, self._guest_name)
>               self._socket.close()
>               if os.path.exists(self._server_addr):
>                   os.unlink(self._server_addr)
> @@ -157,7 +156,8 @@ class SocketServer(Process):
>                   console.eventRemoveCallback()
>
>               except Exception as e:
> -                wok_log.info('Callback is probably removed: %s', e.message)
> +                wok_log.info('[%s] Callback is probably removed: %s',
> +                             self.name, e.message)
>
>               guest.close()
>
> @@ -171,8 +171,7 @@ class SocketServer(Process):
>           """
>           client, client_addr = self._socket.accept()
>           client.settimeout(DEFAULT_TIMEOUT)
> -        wok_log.info('Client %s connected to %s',
> -                     str(client_addr),
> +        wok_log.info('[%s] Client connected to %s', self.name,
>                        self._guest_name)
>
>           # register the callback to receive any data from the console
> @@ -191,9 +190,8 @@ class SocketServer(Process):
>                   data = client.recv(1024)
>
>               except Exception as e:
> -                wok_log.info('Client %s disconnected from %s: %s',
> -                             str(client_addr),
> -                             self._guest_name,
> +                wok_log.info('[%s] Client %s disconnected from %s: %s',
> +                             self.name, str(client_addr), self._guest_name,
>                                e.message)
>                   break
>
> @@ -206,8 +204,8 @@ class SocketServer(Process):
>                   console.send(data)
>
>               except:
> -                wok_log.info('Console of %s is not accessible',
> -                             self._guest_name)
> +                wok_log.info('[%s] Console of %s is not accessible',
> +                             self.name, self._guest_name)
>                   break
>
>           # clear used resources when the connection is closed and, if possible,
> @@ -222,26 +220,25 @@ class SocketServer(Process):
>
>   class LibvirtGuest(object):
>
> -    def __init__(self, guest_name, uri):
> +    def __init__(self, guest_name, uri, process_name):
>           """
>           Constructs a guest object that opens a connection to libvirt and
>           searchs for a particular guest, provided by the caller.
>           """
> +        self._proc_name = process_name
>           try:
>               libvirt = model.libvirtconnection.LibvirtConnection(uri)
>               self._guest = model.vms.VMModel.get_vm(guest_name, libvirt)
>
>           except Exception as e:
> -            wok_log.error('Cannot open guest %s: %s', guest_name, e.message)
> +            wok_log.error('[%s] Cannot open guest %s: %s', self._proc_name,
> +                          guest_name, e.message)
>               raise
>
>           self._libvirt = libvirt.get()
>           self._name = guest_name
>           self._stream = None
>
> -    def get_name(self):
> -        return self._name
> -
>       def is_running(self):
>           """
>           Checks if this guest is currently in a running state.
> @@ -258,8 +255,8 @@ class LibvirtGuest(object):
>           # guest must be in a running state to get its console
>           counter = 10
>           while not self.is_running():
> -            wok_log.info('Guest %s is not running, waiting for it',
> -                         self._name)
> +            wok_log.info('[%s] Guest %s is not running, waiting for it',
> +                         self._proc_name, self._name)
>
>               counter -= 1
>               if counter <= 0:
> @@ -269,8 +266,8 @@ class LibvirtGuest(object):
>
>           # attach a stream in the guest console so we can read from/write to it
>           if self._stream is None:
> -            wok_log.info('Opening the console for guest %s',
> -                         self._name)
> +            wok_log.info('[%s] Opening the console for guest %s',
> +                         self._proc_name, self._name)
>               self._stream = self._libvirt.newStream(libvirt.VIR_STREAM_NONBLOCK)
>               self._guest.openConsole(None,
>                                       self._stream,
> @@ -295,8 +292,7 @@ def main(guest_name, URI):
>           server = SocketServer(guest_name, URI='qemu:///system')
>
>       except Exception as e:
> -        wok_log.error('Cannot create the socket server for %s due to %s',
> -                      guest_name, e.message)
> +        wok_log.error('Cannot create the socket server: %s', e.message)
>           raise
>
>       server.start()
>


-- 
Lucio Correia
Software Engineer
IBM LTC Brazil




More information about the Kimchi-devel mailing list