"Zhang Haoyu" <zhan...@sangfor.com> 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: [...] >>>>There's plently of tree wide work to clean up the cases where stderr >>>>is used where qemu_log should be. If you are finding that log >>>>information is going to stderr instead of the log, patches would be >>>>welcome. If you want to redirect stderr in the interim, do it in whatever runs QEMU.