From patchwork Thu Oct 15 07:30:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Denis V. Lunev" X-Patchwork-Id: 530537 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id DB052140180 for ; Thu, 15 Oct 2015 18:32:26 +1100 (AEDT) Received: from localhost ([::1]:46199 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmd1U-0003Mv-T9 for incoming@patchwork.ozlabs.org; Thu, 15 Oct 2015 03:32:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmczw-00027w-GC for qemu-devel@nongnu.org; Thu, 15 Oct 2015 03:30:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zmczo-00033E-Gw for qemu-devel@nongnu.org; Thu, 15 Oct 2015 03:30:43 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:38357 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmczo-0002zs-3f for qemu-devel@nongnu.org; Thu, 15 Oct 2015 03:30:40 -0400 Received: from irbis.sw.ru ([10.30.2.139]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id t9F7UOwq018866; Thu, 15 Oct 2015 10:30:32 +0300 (MSK) From: "Denis V. Lunev" To: Date: Thu, 15 Oct 2015 10:30:24 +0300 Message-Id: <1444894224-9542-4-git-send-email-den@openvz.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1444894224-9542-1-git-send-email-den@openvz.org> References: <1444894224-9542-1-git-send-email-den@openvz.org> X-detected-operating-system: by eggs.gnu.org: OpenBSD 3.x X-Received-From: 195.214.232.25 Cc: Peter Maydell , Pavel Butsykin , Markus Armbruster , qemu-devel@nongnu.org, Luiz Capitulino , "Denis V. Lunev" Subject: [Qemu-devel] [PATCH 3/3] log: adds a timestamp to each log entry X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Pavel Butsykin This patch is written as an addition to the previous one with logging of QPM commands. This information (the moment of the event) is very useful to match guest problems with actions performing by management software. example: 2015-10-14 17:15:25.644 qmp event: { "timestamp": { "seconds": 1444832125, "microseconds": 644854 }, "event": "RESUME" } 2015-10-14 17:15:35.823 hmp request: info registers 2015-10-14 17:15:46.936 hmp request: q 2015-10-14 17:15:46.936 qmp event: { "timestamp": { "seconds": 1444832146, "microseconds": 936214 }, "event": "SHUTDOWN" } This patch is not perfect as messages from different threads could interleave but this is not a big deal, timestamps are nearly the same. Signed-off-by: Pavel Butsykin Signed-off-by: Denis V. Lunev CC: Markus Armbruster CC: Luiz Capitulino CC: Eric Blake CC: Peter Maydell --- include/qemu/log.h | 9 +++++++++ qemu-log.c | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/include/qemu/log.h b/include/qemu/log.h index ba86606..285636a 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -42,6 +42,7 @@ static inline bool qemu_log_enabled(void) #define LOG_GUEST_ERROR (1 << 11) #define CPU_LOG_MMU (1 << 12) #define LOG_CMD (1 << 13) +#define LOG_TIME (1 << 14) /* Returns true if a bit is set in the current loglevel mask */ @@ -52,6 +53,11 @@ static inline bool qemu_loglevel_mask(int mask) /* Logging functions: */ + +/* timestamp logging function +*/ +void qemu_log_time(void); + /* main logging function */ #define qemu_log(args...) \ @@ -59,6 +65,9 @@ static inline bool qemu_loglevel_mask(int mask) if (!qemu_log_enabled()) { \ break; \ } \ + if (qemu_loglevel & LOG_TIME) { \ + qemu_log_time(); \ + } \ fprintf(qemu_logfile, args); \ } while (0) diff --git a/qemu-log.c b/qemu-log.c index ba7b34c..6a8ca71 100644 --- a/qemu-log.c +++ b/qemu-log.c @@ -25,6 +25,18 @@ FILE *qemu_logfile; int qemu_loglevel; static int log_append = 0; +void qemu_log_time(void) +{ + qemu_timeval tv; + char timestr[32]; + + qemu_gettimeofday(&tv); + + /* cast below needed for OpenBSD where tv_sec is still 'long' */ + strftime(timestr, sizeof(timestr), "%F %T", + localtime((const time_t *)&tv.tv_sec)); + fprintf(qemu_logfile, "%s.%03lu ", timestr, tv.tv_usec / 1000); +} /* enable or disable low levels log */ void do_qemu_set_log(int log_flags, bool use_own_buffers) @@ -98,7 +110,10 @@ const QEMULogItem qemu_log_items[] = { { LOG_GUEST_ERROR, "guest_errors", "log when the guest OS does something invalid (eg accessing a\n" "non-existent register)" }, - { LOG_CMD, "cmd", "log the hmp/qmp commands execution" }, + { LOG_CMD, "cmd", + "log the hmp/qmp commands execution" }, + { LOG_TIME, "time", + "adds a timestamp to each log entry" }, { 0, NULL, NULL }, };