[libvirt] Question about qemuDomainLogContextNew

Erik Skultety eskultet at redhat.com
Mon Mar 27 06:27:49 UTC 2017


On Mon, Mar 27, 2017 at 11:39:09AM +0800, Liu Feng wrote:
> Hi, Dear all
>     I have a question, and need your help.
>     I want to output some log message to
> "/var/log/libvirt/qemu/instance-xxxxxx" when guest kernel crashed, so I add
> following the code:
>     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> 
>     static int
>     qemuProcessHandleGuestPanic(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
>                                         virDomainObjPtr vm,
>                                                                     void
> *opaque) { ......
>     +    qemuDomainLogContextPtr logCtxt = NULL;
> 
>     +    if (!(logCtxt = qemuDomainLogContextNew(driver, vm,
> QEMU_DOMAIN_LOG_CONTEXT_MODE_START))){
>     +        VIR_WARN("Unable to open domainlog");
>     +        goto cleanup;
>     +    }
> 
>         ......
>     }
> 
>     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> 
>     But this code cannot get the logCtxt,
>     logCtxt = qemuDomainLogContextNew(driver, vm,
> QEMU_DOMAIN_LOG_CONTEXT_MODE_START)  always return NULL, so I CANNOT write
> message to log file.
> 

Far from being an expert in this area, but you might want to use
QEMU_DOMAIN_LOG_CONTEXT_MODE_ATTACH, since one domain log file most probably
exists already. Other than that, generally it's very hard to tell why a function
returns NULL, I'd suggest using GDB and see what causes the function to fail.
One more thing, looking at qemuDomainLogContextNew, if it's about to fail, it
will log an error, you might want to check the daemon log as well which will
give you an idea what exactly inside the function failed, but as I said,
nothing can serve you better than the good old GDB in this case.

Erik

>     Really Need your help, Thanks!
> 
>     Thanks
>     Feng

> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list