qemu-log defaults to stderr when there is no '-D' option mentioned on command line. When '-D' option is specified, we also need to specify '-d' option for it to use the specified logfile. When using monitor to enable logging this is troublesome since there will be no '-d' option because of which monitor dumps the logs to stderr.
Fix this by opening the log file when '-D' is specified on the command line. Also fix an ancient comment which does not hold true since changing location and log level has now been streamlined. Signed-off-by: Pranith Kumar <bobby.pr...@gmail.com> CC: Paolo Bonzini <pbonz...@redhat.com> CC: Luiz Capitulino <lcapitul...@redhat.com> CC: Markus Armbruster <arm...@redhat.com> CC: Peter Maydell <peter.mayd...@linaro.org> --- vl.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/vl.c b/vl.c index d4b2d03..5f81ccc 100644 --- a/vl.c +++ b/vl.c @@ -3845,17 +3845,14 @@ int main(int argc, char **argv, char **envp) exit(0); } - /* Open the logfile at this point, if necessary. We can't open the logfile - * when encountering either of the logging options (-d or -D) because the - * other one may be encountered later on the command line, changing the - * location or level of logging. + /* Open the logfile at this point and set the log mask if necessary. */ + if (log_file) { + qemu_set_log_filename(log_file); + } + if (log_mask) { int mask; - if (log_file) { - qemu_set_log_filename(log_file); - } - mask = qemu_str_to_log_mask(log_mask); if (!mask) { qemu_print_log_usage(stdout); -- 1.9.1