diff --git a/server/core/gateway.cc b/server/core/gateway.cc index 1d12f879f..06ee47d16 100644 --- a/server/core/gateway.cc +++ b/server/core/gateway.cc @@ -350,9 +350,12 @@ static void sigterm_handler(int i) if (n_shutdowns == 1) { - if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1) + if (!daemon_mode) { - printf("Failed to write shutdown message!\n"); + if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1) + { + printf("Failed to write shutdown message!\n"); + } } } else @@ -369,16 +372,22 @@ sigint_handler(int i) if (n_shutdowns == 1) { - if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1) + if (!daemon_mode) { - printf("Failed to write shutdown message!\n"); + if (write(STDERR_FILENO, shutdown_msg, sizeof(shutdown_msg) - 1) == -1) + { + printf("Failed to write shutdown message!\n"); + } } } else if (n_shutdowns == 2) { - if (write(STDERR_FILENO, patience_msg, sizeof(patience_msg) - 1) == -1) + if (!daemon_mode) { - printf("Failed to write shutdown message!\n"); + if (write(STDERR_FILENO, patience_msg, sizeof(patience_msg) - 1) == -1) + { + printf("Failed to write shutdown message!\n"); + } } } else @@ -500,8 +509,11 @@ sigfatal_handler(int i) void *addrs[128]; int count = backtrace(addrs, 128); - // First print the stack trace to stderr as malloc is likely broken - backtrace_symbols_fd(addrs, count, STDERR_FILENO); + if (!daemon_mode) + { + // First print the stack trace to stderr as malloc is likely broken + backtrace_symbols_fd(addrs, count, STDERR_FILENO); + } MXS_ALERT("Fatal: MaxScale " MAXSCALE_VERSION " received fatal signal %d. " "Attempting backtrace.", i); diff --git a/server/core/log_manager.cc b/server/core/log_manager.cc index 4fdf3f4f3..893971e53 100644 --- a/server/core/log_manager.cc +++ b/server/core/log_manager.cc @@ -572,6 +572,10 @@ static bool logmanager_init_nomutex(const char* ident, succ = true; lm->lm_enabled = true; + // Redirect stdout and stderr to the log file + freopen(lm->lm_logfile.lf_full_file_name, "a", stdout); + freopen(lm->lm_logfile.lf_full_file_name, "a", stderr); + return_succ: if (err != 0) { @@ -2155,6 +2159,12 @@ static bool thr_flush_file(logmanager_t *lm, filewriter_t *fwr) LOG_ERROR("MaxScale Log: Error, could not re-open log file %s.\n", lf->lf_full_file_name); } + else + { + // Redirect stdout and stderr to the new log file + freopen(lf->lf_full_file_name, "a", stdout); + freopen(lf->lf_full_file_name, "a", stderr); + } } return true; diff --git a/server/core/skygw_utils.cc b/server/core/skygw_utils.cc index 48c0c6d9e..3b1a6f8fe 100644 --- a/server/core/skygw_utils.cc +++ b/server/core/skygw_utils.cc @@ -839,7 +839,6 @@ void skygw_file_close(skygw_file_t* file) } else { - ss_dfprintf(stderr, "Closed %s\n", file->sf_fname); skygw_file_free(file); } }