From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39950) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9FNO-0001R4-WB for qemu-devel@nongnu.org; Wed, 16 Dec 2015 11:56:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a9FNK-0006SZ-Hw for qemu-devel@nongnu.org; Wed, 16 Dec 2015 11:56:30 -0500 Received: from mx0.arrikto.com ([212.71.252.59]:58947) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9FNK-0006SU-Ce for qemu-devel@nongnu.org; Wed, 16 Dec 2015 11:56:26 -0500 Received: from troi.arr-srv (mail.arr-srv [192.168.98.4]) by mx0.arrikto.com (Postfix) with ESMTP id DC94AA04A for ; Wed, 16 Dec 2015 18:56:25 +0200 (EET) Received: from localhost.localdomain (dhcp-106.arr-hq [192.168.94.106]) by troi.arr-srv (Postfix) with ESMTPSA id 63BCF15A for ; Wed, 16 Dec 2015 18:56:25 +0200 (EET) From: Alex Pyrgiotis Date: Wed, 16 Dec 2015 18:56:21 +0200 Message-Id: <1450284981-10641-1-git-send-email-apyrgio@arrikto.com> Subject: [Qemu-devel] [PATCH] os-posix: Log to logfile in case of daemonize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: Dimitris Aragiorgis In case of daemonize, use the logfile passed with the -D option in order to redirect stdout/stderr to a file instead of /dev/null. Signed-off-by: Dimitris Aragiorgis Signed-off-by: Alex Pyrgiotis diff --git a/include/qemu/log.h b/include/qemu/log.h index 362cbc4..b5de1df 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -175,6 +175,7 @@ static inline void qemu_set_log(int log_flags) } void qemu_set_log_filename(const char *filename); +char *qemu_get_log_filename(void); int qemu_str_to_log_mask(const char *str); /* Print a usage message listing all the valid logging categories diff --git a/os-posix.c b/os-posix.c index e4da406..18052fb 100644 --- a/os-posix.c +++ b/os-posix.c @@ -40,6 +40,7 @@ #include "net/slirp.h" #include "qemu-options.h" #include "qemu/rcu.h" +#include "qemu/log.h" #ifdef CONFIG_LINUX #include @@ -255,16 +256,25 @@ void os_daemonize(void) void os_setup_post(void) { int fd = 0; + char *log = NULL; if (daemonize) { if (chdir("/")) { perror("not able to chdir to /"); exit(1); } - TFR(fd = qemu_open("/dev/null", O_RDWR)); + + log = qemu_get_log_filename(); + if (log != NULL) { + TFR(fd = qemu_open(log, O_RDWR | O_APPEND | O_CREAT, 0640)); + } else { + TFR(fd = qemu_open("/dev/null", O_RDWR)); + } if (fd == -1) { + fprintf(stderr, "Cannot open \"%s\" for logging\n", log); exit(1); } + g_free(log); } change_root(); diff --git a/qemu-log.c b/qemu-log.c index 7cb01a8..44447bc 100644 --- a/qemu-log.c +++ b/qemu-log.c @@ -90,6 +90,11 @@ void qemu_set_log_filename(const char *filename) qemu_set_log(qemu_loglevel); } +char *qemu_get_log_filename(void) +{ + return g_strdup(logfilename); +} + const QEMULogItem qemu_log_items[] = { { CPU_LOG_TB_OUT_ASM, "out_asm", "show generated host assembly code for each compiled TB" }, -- 2.6.2