qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [questions] about qemu log


From: Peter Crosthwaite
Subject: Re: [Qemu-devel] [questions] about qemu log
Date: Wed, 6 Aug 2014 22:04:34 +1000

On Wed, Aug 6, 2014 at 5:42 PM, Markus Armbruster <address@hidden> wrote:
> "Zhang Haoyu" <address@hidden> writes:
>
>>>>>>>>> The output is on qemu's stderr.  You are in control of what that
>>>>>>>> stderr is.
>>>>>>>>
>>>>>>>> I don't get why we can configure
>>>>>>>> -D /path/to/unique/file/name.log
>>>>>>>>
>>>>>>>> but we also have to redirect stderr (I didn't checked if the daemonize
>>>>>>>> option was closing it). What's the purpose of this logfile option?
>>>>>>>>
>>>>>>>
>>>>>>>Well -D will log to file only loggable (i.e. qemu_log()) information
>>>>>>>(which has all sorts of options and switches). Stderr, is a little
>>>>>>>more static and should in theory be limited to genuine errors. But if
>>>>>>>you want a combined log of both you can simply omit -D to default
>>>>>>>qemu_log output to stderr. This gives you a combined log that you can
>>>>>>>redirect anywhere. To be honest, this is what I do as a matter of
>>>>>>>course (2> foo rather than -D foo).
>>>>>>>
>>>>>> Maybe we can introduce a new qemu option to specify a error logfile
>>>>>> where stderr be redirected, like below,
>>>>>> DEF("elogfile", HAS_ARG, QEMU_OPTION_elogfile, \
>>>>>>     "-elogfile logfile redirect stderr log to logfile(default
>>>>>> /var/log/qemu/<vm name>##.log)\n",
>>>>>>     QEMU_ARCH_ALL)
>>>>>> STEXI
>>>>>> @item -elogfile @var{logfile}
>>>>>> @findex -elogfile
>>>>>> redirect stderr in @var{logfile}
>>>>>> ETEXI
>>>>>> then we can set the error log file through qemu command,
>>>>>> /var/log/qemu/<vm name>##.log as default.
>>>>>>
>>>>>
>>>>>This sounds out-of-scope for QEMU to me and makes a standard flow
>>>>>non-standard. If prints are going to stderr where should be going
>>>>>elsewhere they probably should be fixed. Do you have specific examples
>>>>>of information going to stderr that you would rather go to a log (be
>>>>>it an error log or something else?).
>>>>>
>>>> I use proxmox to manage vm, it dose not redirect qemu's stderr, and
>>>> start vm with -daemonize option,
>>>> so the error log disappeared.
>>>> I want to redirect the error log of qemu to a specified logfile, if
>>>> fault happened, I can use the error log to analyze the fault.
>>>>
>>>> And, why qemu output the error log to stderr instead of a error
>>>> logfile which can be configure?
>>>
>>>Because the code is a mess in that regard.
>>>
>>>You don't fix that by redirecting stderr wholesale, because that just
>>>adds to the mess.  You fix it at the root, one ill-advised fprintf() at
>>>a time, as Peter advises:
>>>
>>
>> Sorry, I'm afraid I misunderstand what you mean,
>> should I replace all of fprintf(stderr, ...) with qemu_log() ?
>> or only some cases where stderr is used where qemu_log should be, as
>> Perter advises?
>
> I didn't mean to suggest blind conversion from fprintf() to qemu_log().
> Each instance of fprintf() needs to be reviewed before conversion.

Yes i'm afraid there is no quick one-shot fix to your problem. The
best is the suggested workarounds using stderr redirection.

>  I
> think that's exactly Peter's advice, too.
>

Correct.

Regards,
Peter

>> If so, should I still need to redirect the stderr to specified logfile
>> in qemu's parent shell/process ?
>
> Probably.  Libvirt does it.
>



reply via email to

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