From patchwork Mon Mar 14 11:21:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Denis V. Lunev" X-Patchwork-Id: 8578491 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 1A9D39F294 for ; Mon, 14 Mar 2016 11:22:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 666A0202E5 for ; Mon, 14 Mar 2016 11:22:26 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 52EC52025A for ; Mon, 14 Mar 2016 11:22:25 +0000 (UTC) Received: from localhost ([::1]:40175 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afQZs-0001En-Lg for patchwork-qemu-devel@patchwork.kernel.org; Mon, 14 Mar 2016 07:22:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39534) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afQZb-00018r-Nk for qemu-devel@nongnu.org; Mon, 14 Mar 2016 07:22:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1afQZZ-0003QU-CW for qemu-devel@nongnu.org; Mon, 14 Mar 2016 07:22:07 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:35243 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afQZZ-0003JW-1E for qemu-devel@nongnu.org; Mon, 14 Mar 2016 07:22:05 -0400 Received: from hades.sw.ru ([10.30.8.132]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id u2EBLf97003660; Mon, 14 Mar 2016 14:21:53 +0300 (MSK) From: "Denis V. Lunev" To: Date: Mon, 14 Mar 2016 14:21:38 +0300 Message-Id: <1457954501-26528-7-git-send-email-den@openvz.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1457954501-26528-1-git-send-email-den@openvz.org> References: <1457954501-26528-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: Pavel Butsykin , Markus Armbruster , qemu-devel@nongnu.org, Luiz Capitulino , Stefan Hajnoczi , Paolo Bonzini , "Denis V. Lunev" Subject: [Qemu-devel] [PATCH 6/9] log: log QMP commands and replies 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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Pavel Butsykin This log would be very welcome for long-term diagnostics of the system in the production. This log is at least necessary to understand what has been happened on the system and to identify issues at higher-level subsystems (libvirt, etc). These messages will be quite useful to understand how things are going. Signed-off-by: Pavel Butsykin Signed-off-by: Denis V. Lunev CC: Stefan Hajnoczi CC: Paolo Bonzini CC: Luiz Capitulino CC: Markus Armbruster CC: Eric Blake --- include/qemu/log.h | 1 + monitor.c | 13 +++++++++++++ util/log.c | 2 ++ 3 files changed, 16 insertions(+) diff --git a/include/qemu/log.h b/include/qemu/log.h index a05c7dc..55bceae 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -42,6 +42,7 @@ static inline bool qemu_log_separate(void) #define CPU_LOG_TB_NOCHAIN (1 << 13) #define CPU_LOG_PAGE (1 << 14) #define LOG_TRACE (1 << 15) +#define LOG_QMP (1 << 16) /* Returns true if a bit is set in the current loglevel mask */ diff --git a/monitor.c b/monitor.c index e99ca8c..eec4e58 100644 --- a/monitor.c +++ b/monitor.c @@ -437,6 +437,12 @@ static void monitor_protocol_emitter(Monitor *mon, QObject *data, } monitor_json_emitter(mon, QOBJECT(qmp)); + if (qemu_loglevel_mask(LOG_QMP)) { + QString *output_json = qobject_to_json(QOBJECT(qmp)); + qemu_log_mask(LOG_QMP, "QMP reply: %s\n", output_json->string); + QDECREF(output_json); + } + QDECREF(qmp); } @@ -3867,6 +3873,11 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) goto err_out; } + if (qemu_loglevel_mask(LOG_QMP)) { + QString *output_json = qobject_to_json(obj); + qemu_log_mask(LOG_QMP, "QMP command: %s\n", output_json->string); + QDECREF(output_json); + } input = qmp_check_input_obj(obj, &local_err); if (!input) { qobject_decref(obj); @@ -3988,12 +3999,14 @@ static void monitor_qmp_event(void *opaque, int event) monitor_json_emitter(mon, data); qobject_decref(data); mon_refcount++; + qemu_log_mask(LOG_QMP, "QMP: new connection established\n"); break; case CHR_EVENT_CLOSED: json_message_parser_destroy(&mon->qmp.parser); json_message_parser_init(&mon->qmp.parser, handle_qmp_command); mon_refcount--; monitor_fdsets_cleanup(); + qemu_log_mask(LOG_QMP, "QMP: connection closed\n"); break; } } diff --git a/util/log.c b/util/log.c index 65d46e2..5fc517b 100644 --- a/util/log.c +++ b/util/log.c @@ -131,6 +131,8 @@ const QEMULogItem qemu_log_items[] = { { CPU_LOG_TB_NOCHAIN, "nochain", "do not chain compiled TBs so that \"exec\" and \"cpu\" show\n" "complete traces" }, + { LOG_QMP, "qmp", + "log the QMP commands and events" }, { 0, NULL, NULL }, };