diff --git a/include/Nazara/Core/Log.hpp b/include/Nazara/Core/Log.hpp index fc64c8a49..2a19c2c6b 100644 --- a/include/Nazara/Core/Log.hpp +++ b/include/Nazara/Core/Log.hpp @@ -41,6 +41,7 @@ namespace Nz static bool IsEnabled(); + static void SetDefaultLogger(AbstractLogger* defaultLogger); static void SetLogger(AbstractLogger* logger); static void Write(const String& string); @@ -53,6 +54,7 @@ namespace Nz static bool Initialize(); static void Uninitialize(); + static AbstractLogger* s_defaultLogger; static AbstractLogger* s_logger; static bool s_enabled; }; diff --git a/src/Nazara/Core/Log.cpp b/src/Nazara/Core/Log.cpp index 9e6b13353..561d7c815 100644 --- a/src/Nazara/Core/Log.cpp +++ b/src/Nazara/Core/Log.cpp @@ -52,6 +52,22 @@ namespace Nz return s_enabled; } + /*! + * \brief Sets the default logger + * + * \param defaultLogger Default AbstractLogger + */ + + void Log::SetDefaultLogger(AbstractLogger* defaultLogger) + { + if (s_defaultLogger != &s_stdLogger) + delete s_defaultLogger; + + s_defaultLogger = defaultLogger; + if (!s_defaultLogger) + s_defaultLogger = &s_stdLogger; + } + /*! * \brief Sets the logger * @@ -111,7 +127,7 @@ namespace Nz bool Log::Initialize() { - SetLogger(new FileLogger()); + SetLogger(s_defaultLogger); return true; } @@ -121,12 +137,14 @@ namespace Nz void Log::Uninitialize() { + SetDefaultLogger(nullptr); SetLogger(nullptr); } NazaraStaticSignalImpl(Log, OnLogWrite); NazaraStaticSignalImpl(Log, OnLogWriteError); + AbstractLogger* Log::s_defaultLogger = &s_stdLogger; AbstractLogger* Log::s_logger = &s_stdLogger; bool Log::s_enabled = true; }