Skip to content

Commit

Permalink
add timestamp to error_report()
Browse files Browse the repository at this point in the history
[Issue]
When we offer a customer support service and a problem happens
in a customer's system, we try to understand the problem by
comparing what the customer reports with message logs of the
customer's system.

In this case, we often need to know when the problem happens.

But, currently, there is no timestamp in qemu's error messages.
Therefore, we may not be able to understand the problem based on
error messages.

[Solution]
Add a timestamp to qemu's error message logged by
error_report() with g_time_val_to_iso8601().

Signed-off-by: Seiji Aguchi <seiji.aguchi@hds.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
  • Loading branch information
Seiji Aguchi authored and Luiz Capitulino committed Jul 10, 2013
1 parent f53cae5 commit 5e2ac51
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/qemu/error-report.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#define QEMU_ERROR_H

#include <stdarg.h>
#include <stdbool.h>
#include "qemu/compiler.h"

typedef struct Location {
Expand All @@ -40,5 +41,6 @@ void error_print_loc(void);
void error_set_progname(const char *argv0);
void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
const char *error_get_progname(void);
extern bool enable_timestamp_msg;

#endif
11 changes: 11 additions & 0 deletions qemu-options.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3100,6 +3100,17 @@ property must be set. These objects are placed in the
'/objects' path.
ETEXI

DEF("msg", HAS_ARG, QEMU_OPTION_msg,
"-msg timestamp[=on|off]\n"
" change the format of messages\n"
" on|off controls leading timestamps (default:on)\n",
QEMU_ARCH_ALL)
STEXI
@item -msg timestamp[=on|off]
@findex -msg
prepend a timestamp to each log message.(default:on)
ETEXI

HXCOMM This is the last statement. Insert new options before this line!
STEXI
@end table
Expand Down
10 changes: 10 additions & 0 deletions util/qemu-error.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ void error_print_loc(void)
}
}

bool enable_timestamp_msg;
/*
* Print an error message to current monitor if we have one, else to stderr.
* Format arguments like sprintf(). The result should not contain
Expand All @@ -206,6 +207,15 @@ void error_print_loc(void)
void error_report(const char *fmt, ...)
{
va_list ap;
GTimeVal tv;
gchar *timestr;

if (enable_timestamp_msg) {
g_get_current_time(&tv);
timestr = g_time_val_to_iso8601(&tv);
error_printf("%s ", timestr);
g_free(timestr);
}

error_print_loc();
va_start(ap, fmt);
Expand Down
26 changes: 26 additions & 0 deletions vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,18 @@ static QemuOptsList qemu_realtime_opts = {
},
};

static QemuOptsList qemu_msg_opts = {
.name = "msg",
.head = QTAILQ_HEAD_INITIALIZER(qemu_msg_opts.head),
.desc = {
{
.name = "timestamp",
.type = QEMU_OPT_BOOL,
},
{ /* end of list */ }
},
};

/**
* Get machine options
*
Expand Down Expand Up @@ -1503,6 +1515,12 @@ static void configure_realtime(QemuOpts *opts)
}
}


static void configure_msg(QemuOpts *opts)
{
enable_timestamp_msg = qemu_opt_get_bool(opts, "timestamp", true);
}

/***********************************************************/
/* USB devices */

Expand Down Expand Up @@ -2942,6 +2960,7 @@ int main(int argc, char **argv, char **envp)
qemu_add_opts(&qemu_object_opts);
qemu_add_opts(&qemu_tpmdev_opts);
qemu_add_opts(&qemu_realtime_opts);
qemu_add_opts(&qemu_msg_opts);

runstate_init();

Expand Down Expand Up @@ -3838,6 +3857,13 @@ int main(int argc, char **argv, char **envp)
}
configure_realtime(opts);
break;
case QEMU_OPTION_msg:
opts = qemu_opts_parse(qemu_find_opts("msg"), optarg, 0);
if (!opts) {
exit(1);
}
configure_msg(opts);
break;
default:
os_parse_cmd_args(popt->index, optarg);
}
Expand Down

0 comments on commit 5e2ac51

Please sign in to comment.