>>>>>>> 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? If so, should I still need to redirect the stderr to specified logfile in qemu's parent shell/process ? Thanks, Zhang Haoyu >[...] >>>>>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.