From 248a5c3e29b887657a6abe08aafe7e7fede84e44 Mon Sep 17 00:00:00 2001 From: David Williams Date: Thu, 30 Jan 2014 22:10:52 +0100 Subject: [PATCH] Removed old logging system. --- examples/Basic/main.cpp | 3 - .../include/PolyVoxCore/Impl/ErrorHandling.h | 40 ++++--- .../include/PolyVoxCore/Impl/Logging.h | 106 ------------------ .../PolyVoxCore/source/Impl/ErrorHandling.cpp | 44 ++++---- library/PolyVoxCore/source/Impl/Logging.cpp | 88 --------------- 5 files changed, 48 insertions(+), 233 deletions(-) diff --git a/examples/Basic/main.cpp b/examples/Basic/main.cpp index b8164e31..64097731 100644 --- a/examples/Basic/main.cpp +++ b/examples/Basic/main.cpp @@ -68,9 +68,6 @@ void createSphereInVolume(SimpleVolume& volData, float fRadius) int main(int argc, char *argv[]) { - // Show logs - setTraceStream(&(std::cout)); - //Create and show the Qt OpenGL window QApplication app(argc, argv); OpenGLWidget openGLWidget(0); diff --git a/library/PolyVoxCore/include/PolyVoxCore/Impl/ErrorHandling.h b/library/PolyVoxCore/include/PolyVoxCore/Impl/ErrorHandling.h index 97b56fff..acfd5e7f 100644 --- a/library/PolyVoxCore/include/PolyVoxCore/Impl/ErrorHandling.h +++ b/library/PolyVoxCore/include/PolyVoxCore/Impl/ErrorHandling.h @@ -83,13 +83,15 @@ freely, subject to the following restrictions: { \ if (!(condition)) \ { \ - PolyVox::logFatal() << "\n"; \ - PolyVox::logFatal() << " PolyVox Assertion Failed!"; \ - PolyVox::logFatal() << " ========================="; \ - PolyVox::logFatal() << " Condition: " << #condition; \ - PolyVox::logFatal() << " Message: " << (message); \ - PolyVox::logFatal() << " Location: " << "Line " << __LINE__ << " of " << __FILE__; \ - PolyVox::logFatal() << "\n"; \ + std::stringstream ss; \ + ss << "\n"; \ + ss << " PolyVox Assertion Failed!"; \ + ss << " ========================="; \ + ss << " Condition: " << #condition; \ + ss << " Message: " << (message); \ + ss << " Location: " << "Line " << __LINE__ << " of " << __FILE__; \ + ss << "\n"; \ + PolyVox::Impl::getLoggerInstance()->logFatalMessage(ss.str()); \ POLYVOX_HALT(); \ } \ } while(0) \ @@ -154,8 +156,10 @@ freely, subject to the following restrictions: { \ if ((condition)) \ { \ - PolyVox::logError() << (message); \ - throw type((message)); \ + std::stringstream ss; \ + ss << message; \ + PolyVox::Impl::getLoggerInstance()->logErrorMessage(ss.str()); \ + throw type(ss.str()); \ } \ } while(0) \ POLYVOX_MSC_WARNING_POP @@ -168,8 +172,10 @@ freely, subject to the following restrictions: POLYVOX_DISABLE_MSC_WARNING(4127) \ do \ { \ - PolyVox::logError() << (message); \ - throw type((message)); \ + std::stringstream ss; \ + ss << message; \ + PolyVox::Impl::getLoggerInstance()->logErrorMessage(ss.str()); \ + throw type(ss.str()); \ } while(0) \ POLYVOX_MSC_WARNING_POP @@ -192,8 +198,10 @@ freely, subject to the following restrictions: { \ if ((condition)) \ { \ - PolyVox::logError() << (message); \ - type except = (type)((message)); \ + std::stringstream ss; \ + ss << message; \ + PolyVox::Impl::getLoggerInstance()->logErrorMessage(ss.str()); \ + type except = (type)(ss.str()); \ getThrowHandler()((except), __FILE__, __LINE__); \ } \ } while(0) \ @@ -207,8 +215,10 @@ freely, subject to the following restrictions: POLYVOX_DISABLE_MSC_WARNING(4127) \ do \ { \ - PolyVox::logError() << (message); \ - type except = (type)((message)); \ + std::stringstream ss; \ + ss << message; \ + PolyVox::Impl::getLoggerInstance()->logErrorMessage(ss.str()); \ + type except = (type)(ss.str()); \ getThrowHandler()((except), __FILE__, __LINE__); \ } while(0) \ POLYVOX_MSC_WARNING_POP diff --git a/library/PolyVoxCore/include/PolyVoxCore/Impl/Logging.h b/library/PolyVoxCore/include/PolyVoxCore/Impl/Logging.h index 8bee54f0..ea138e15 100644 --- a/library/PolyVoxCore/include/PolyVoxCore/Impl/Logging.h +++ b/library/PolyVoxCore/include/PolyVoxCore/Impl/Logging.h @@ -74,112 +74,6 @@ namespace PolyVox } void setLogger(Logger* pLogger); - - namespace Impl - { - std::ostream*& getTraceStreamInstance(); - std::ostream*& getDebugStreamInstance(); - std::ostream*& getInfoStreamInstance(); - std::ostream*& getWarningStreamInstance(); - std::ostream*& getErrorStreamInstance(); - std::ostream*& getFatalStreamInstance(); - } - - /// Get a stream which will consume all input without outputting anything. - std::ostream* getNullStream(void); - - // These take pointers rather than references to emphasise that the - // user needs to keep the target alive as long as PolyVox is writing data. - void setTraceStream(std::ostream* pStream); - void setDebugStream(std::ostream* pStream); - void setInfoStream(std::ostream* pStream); - void setWarningStream(std::ostream* pStream); - void setErrorStream(std::ostream* pStream); - void setFatalStream(std::ostream* pStream); - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logTrace - { - logTrace(){} - ~logTrace(){*(Impl::getTraceStreamInstance()) << std::endl;} - - template - logTrace &operator<<(const T &x) - { - *(Impl::getTraceStreamInstance()) << x; - return *this; - } - }; - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logDebug - { - logDebug(){} - ~logDebug(){*(Impl::getDebugStreamInstance()) << std::endl;} - - template - logDebug &operator<<(const T &x) - { - *(Impl::getDebugStreamInstance()) << x; - return *this; - } - }; - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logInfo - { - logInfo(){} - ~logInfo(){*(Impl::getInfoStreamInstance()) << std::endl;} - - template - logInfo &operator<<(const T &x) - { - *(Impl::getInfoStreamInstance()) << x; - return *this; - } - }; - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logWarning - { - logWarning(){} - ~logWarning(){*(Impl::getWarningStreamInstance()) << std::endl;} - - template - logWarning &operator<<(const T &x) - { - *(Impl::getWarningStreamInstance()) << x; - return *this; - } - }; - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logError - { - logError(){} - ~logError(){*(Impl::getErrorStreamInstance()) << std::endl;} - - template - logError &operator<<(const T &x) - { - *(Impl::getErrorStreamInstance()) << x; - return *this; - } - }; - - // Automatically appending 'std::endl' as described here: http://stackoverflow.com/a/2179782 - struct logFatal - { - logFatal(){} - ~logFatal(){*(Impl::getFatalStreamInstance()) << std::endl;} - - template - logFatal &operator<<(const T &x) - { - *(Impl::getFatalStreamInstance()) << x; - return *this; - } - }; } #ifdef POLYVOX_LOG_TRACE_ENABLED diff --git a/library/PolyVoxCore/source/Impl/ErrorHandling.cpp b/library/PolyVoxCore/source/Impl/ErrorHandling.cpp index db9e9b78..98e03fd2 100644 --- a/library/PolyVoxCore/source/Impl/ErrorHandling.cpp +++ b/library/PolyVoxCore/source/Impl/ErrorHandling.cpp @@ -29,27 +29,29 @@ namespace PolyVox #ifndef POLYVOX_THROW_ENABLED void defaultThrowHandler(std::exception& e, const char* file, int line) { - logFatal() << "\n"; \ - logFatal() << " PolyVox exception thrown!"; \ - logFatal() << " ========================="; \ - logFatal() << " PolyVox has tried to throw an exception but it was built without support"; \ - logFatal() << " for exceptions. In this scenario PolyVox will call a 'throw handler'"; \ - logFatal() << " and this message is being printed by the default throw handler."; \ - logFatal() << "\n"; \ - logFatal() << " If you don't want to enable exceptions then you should try to determine why"; \ - logFatal() << " this exception was thrown and make sure it doesn't happen again. If it was"; \ - logFatal() << " due to something like an invalid argument to a function then you should be"; \ - logFatal() << " able to fix it quite easily by validating parameters as appropriate. More"; \ - logFatal() << " complex exception scenarios (out of memory, etc) might be harder to fix and"; \ - logFatal() << " you should replace this default handler with something which is more"; \ - logFatal() << " meaningful to your users."; \ - logFatal() << "\n"; \ - logFatal() << " Exception details"; \ - logFatal() << " -----------------"; \ - logFatal() << " Line: " << line; \ - logFatal() << " File: " << file; \ - logFatal() << " Message: " << e.what(); \ - logFatal() << "\n"; \ + std::stringstream ss; \ + ss << "\n"; \ + ss << " PolyVox exception thrown!"; \ + ss << " ========================="; \ + ss << " PolyVox has tried to throw an exception but it was built without support"; \ + ss << " for exceptions. In this scenario PolyVox will call a 'throw handler'"; \ + ss << " and this message is being printed by the default throw handler."; \ + ss << "\n"; \ + ss << " If you don't want to enable exceptions then you should try to determine why"; \ + ss << " this exception was thrown and make sure it doesn't happen again. If it was"; \ + ss << " due to something like an invalid argument to a function then you should be"; \ + ss << " able to fix it quite easily by validating parameters as appropriate. More"; \ + ss << " complex exception scenarios (out of memory, etc) might be harder to fix and"; \ + ss << " you should replace this default handler with something which is more"; \ + ss << " meaningful to your users."; \ + ss << "\n"; \ + ss << " Exception details"; \ + ss << " -----------------"; \ + ss << " Line: " << line; \ + ss << " File: " << file; \ + ss << " Message: " << e.what(); \ + ss << "\n"; \ + PolyVox::Impl::getLoggerInstance()->logFatalMessage(ss.str()); \ POLYVOX_HALT(); \ } diff --git a/library/PolyVoxCore/source/Impl/Logging.cpp b/library/PolyVoxCore/source/Impl/Logging.cpp index f055f40c..74712bb8 100644 --- a/library/PolyVoxCore/source/Impl/Logging.cpp +++ b/library/PolyVoxCore/source/Impl/Logging.cpp @@ -40,92 +40,4 @@ namespace PolyVox { Impl::getLoggerInstance() = pLogger; } - - /** - * \return A pointer to the null stream. - */ - std::ostream* getNullStream(void) - { - // Passing zero to the stream constructor guarentees it will discard all input. See - // here http://stackoverflow.com/a/8244052 and here http://stackoverflow.com/a/6240980 - static std::ostream s_NullStream(0); - return &s_NullStream; - } - - // These create the global stream instances, created on demand. - namespace Impl - { - std::ostream*& getTraceStreamInstance() - { - static std::ostream* s_pTraceStream = getNullStream(); - return s_pTraceStream; - } - - std::ostream*& getDebugStreamInstance() - { - static std::ostream* s_pDebugStream = getNullStream(); - return s_pDebugStream; - } - - std::ostream*& getInfoStreamInstance() - { - static std::ostream* s_pInfoStream = &(std::cout); - return s_pInfoStream; - } - - std::ostream*& getWarningStreamInstance() - { - static std::ostream* s_pWarningStream = &(std::cerr); - return s_pWarningStream; - } - - std::ostream*& getErrorStreamInstance() - { - static std::ostream* s_pErrorStream = &(std::cerr); - return s_pErrorStream; - } - - std::ostream*& getFatalStreamInstance() - { - static std::ostream* s_pFatalStream = &(std::cerr); - return s_pFatalStream; - } - } - - void setTraceStream(std::ostream* pStream) - { - Impl::getTraceStreamInstance() = pStream; - } - - void setDebugStream(std::ostream* pStream) - { - Impl::getDebugStreamInstance() = pStream; - } - - void setInfoStream(std::ostream* pStream) - { - Impl::getInfoStreamInstance() = pStream; - } - - void setWarningStream(std::ostream* pStream) - { - Impl::getWarningStreamInstance() = pStream; - } - - void setErrorStream(std::ostream* pStream) - { - Impl::getErrorStreamInstance() = pStream; - } - - // Fatal stream for logging - std::ostream*& getFatalStreamInstance() - { - static std::ostream* s_pFatalStream = &(std::cerr); - return s_pFatalStream; - } - - void setFatalStream(std::ostream* pStream) - { - getFatalStreamInstance() = pStream; - } }