[libvirt] About libvirt.py stdout redirection

Daniel P. Berrange berrange at redhat.com
Thu Jan 16 10:43:23 UTC 2014


On Thu, Jan 16, 2014 at 06:31:02PM +0800, me,apporc wrote:
> Dear developers,
> As we know libvirt.py using libvirtmod.so, eg:
> 
>     def defineXML(self, xml):
>         """Define a domain, but does not start it.
>         This definition is persistent, until explicitly undefined with
>         virDomainUndefine(). A previous definition for this domain would be
>         overriden if it already exists. """
>         ret = libvirtmod.virDomainDefineXML(self._o, xml)
>         if ret is None:raise libvirtError('virDomainDefineXML() failed',
> conn=self)
>         __tmp = virDomain(self,_obj=ret)
>         return __tmp
> 
> 
> In my python program
> 
> #test.py
> import libvirt
> conn=libvirt.open("qemu:///system")
> xml=...
> conn.defineXML(xml) # Because i need this xml to be wrong for feature
> testing here
>  # Error will happen here, and error message is printed to stderr.
> 
> The error message is annoying.
> I need to know how to hide the error message printing to stderr by
> libvirtmod.
> 
> After i add sys.stderr = open('xxx', 'w') before invoking
> conn.defineXML(xml),  the error message is still printed to the terminal.
> Which means, i can redirect stderr to anywhere else in my python program,
>  but it changes back to terminal when control flow go to libvirtmod.

Do this:

  def libvirt_ignore(ignore, err):
      pass
  libvirt.registerErrorHandler(f=libvirt_ignore, ctx=None)

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list