From c290016c8e99a349ab4092389be624bb23c23d85 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 12 Sep 2012 11:49:46 +0200 Subject: [PATCH] Redirect stderr in separate method --- include/transport/logging.h | 1 + spectrum/src/main.cpp | 5 ++--- src/logging.cpp | 14 +++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/include/transport/logging.h b/include/transport/logging.h index d3103103..d79fa8a5 100644 --- a/include/transport/logging.h +++ b/include/transport/logging.h @@ -57,6 +57,7 @@ namespace Logging { void initBackendLogging(Config *config); void initMainLogging(Config *config); void shutdownLogging(); +void redirect_stderr(); } diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index 7efe1e98..75169b1a 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -315,6 +315,7 @@ int main(int argc, char **argv) } #endif + Logging::initMainLogging(&config); #ifndef WIN32 if (!CONFIG_STRING(&config, "service.group").empty() ||!CONFIG_STRING(&config, "service.user").empty() ) { @@ -377,9 +378,7 @@ int main(int argc, char **argv) return -1; } - // Logging has to be initialized after all std:cerr output here, because - // it forwards std::cerr to log file. - Logging::initMainLogging(&config); + Logging::redirect_stderr(); UserManager userManager(&transport, &userRegistry, storageBackend); userManager_ = &userManager; diff --git a/src/logging.cpp b/src/logging.cpp index d998a505..f724993e 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -166,19 +166,23 @@ static void initLogging(Config *config, std::string key) { log4cxx::PropertyConfigurator::configure(p); } - - intercepter_cerr = new intercept_stream(std::cerr, "cerr"); - intercepter_cout = new intercept_stream(std::cout, "cout"); } void initBackendLogging(Config *config) { initLogging(config, "logging.backend_config"); + + redirect_stderr(); } void initMainLogging(Config *config) { initLogging(config, "logging.config"); } +void redirect_stderr() { + intercepter_cerr = new intercept_stream(std::cerr, "cerr"); + intercepter_cout = new intercept_stream(std::cout, "cout"); +} + void shutdownLogging() { delete intercepter_cerr; delete intercepter_cout; @@ -194,6 +198,10 @@ void initMainLogging(Config */*config*/) { void shutdownLogging() { +} + +void redirect_stderr() { + } #endif /* WITH_LOG4CXX */