qemu_print_log_usage(stdout);
exit(1);
}
- qemu_set_log(mask);
+ qemu_set_log(mask, &error_fatal);
}
if (optind >= argc) {
extern const QEMULogItem qemu_log_items[];
-void qemu_set_log(int log_flags);
+bool qemu_set_log(int log_flags, Error **errp);
bool qemu_set_log_filename(const char *filename, Error **errp);
void qemu_set_dfilter_ranges(const char *ranges, Error **errp);
bool qemu_log_in_addr_range(uint64_t addr);
log_mask = last_log_mask | (enable_strace ? LOG_STRACE : 0);
if (log_mask) {
- qemu_set_log(log_mask);
+ qemu_set_log(log_mask, &error_fatal);
}
if (!trace_init_backends()) {
{
int mask;
const char *items = qdict_get_str(qdict, "items");
+ Error *err = NULL;
if (!strcmp(items, "none")) {
mask = 0;
return;
}
}
- qemu_set_log(mask);
+
+ if (!qemu_set_log(mask, &err)) {
+ error_report_err(err);
+ }
}
static void hmp_singlestep(Monitor *mon, const QDict *qdict)
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
/* find the command */
for (cmd = img_cmds; cmd->name != NULL; cmd++) {
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
/* initialize commands */
qemuio_add_command(&quit_cmd);
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
socket_activation = check_socket_activation();
if (socket_activation == 0) {
exit(EXIT_FAILURE);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
#ifdef CONFIG_MPATH
dm_init();
qemu_print_log_usage(stdout);
exit(1);
}
- qemu_set_log(mask);
+ qemu_set_log(mask, &error_fatal);
} else {
- qemu_set_log(0);
+ qemu_set_log(0, &error_fatal);
}
qemu_add_default_firmwarepath();
if (!trace_init_backends()) {
return EXIT_FAILURE;
}
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
qemu_init_main_loop(&error_fatal);
process_options(argc, argv, false);
* In cases where a logging backend other than log is used,
* this is needed.
*/
- qemu_set_log(CPU_LOG_TB_OUT_ASM);
+ qemu_set_log(CPU_LOG_TB_OUT_ASM, &error_abort);
file_path = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
file_path1 = g_build_filename(dir, "qemu_test_log_write1.log", NULL);
}
/* enable or disable low levels log */
-void qemu_set_log(int log_flags)
+bool qemu_set_log(int log_flags, Error **errp)
{
bool need_to_open_file = false;
QemuLogFile *logfile;
if (logfilename) {
logfile->fd = fopen(logfilename, log_append ? "a" : "w");
if (!logfile->fd) {
- g_free(logfile);
- perror(logfilename);
- _exit(1);
+ error_setg_errno(errp, errno, "Error opening logfile %s",
+ logfilename);
+ return false;
}
/* In case we are a daemon redirect stderr to logfile */
if (is_daemonized()) {
log_append = 1;
qatomic_rcu_set(&qemu_logfile, logfile);
}
+ return true;
}
/*
}
qemu_log_close();
- qemu_set_log(qemu_loglevel);
- return true;
+ return qemu_set_log(qemu_loglevel, errp);
}
/* Returns true if addr is in our debug filter or no filter defined