Browse Source

Merge branch 'v0.14'

Paul-Louis Ageneau 3 years ago
parent
commit
e949a58f0c
2 changed files with 17 additions and 8 deletions
  1. 1 1
      CMakeLists.txt
  2. 16 7
      src/global.cpp

+ 1 - 1
CMakeLists.txt

@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.7)
 project(libdatachannel
-	VERSION 0.14.2
+	VERSION 0.14.3
 	LANGUAGES CXX)
 set(PROJECT_DESCRIPTION "C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets")
 

+ 16 - 7
src/global.cpp

@@ -58,28 +58,37 @@ struct LogAppender : public plog::IAppender {
 };
 
 void InitLogger(LogLevel level, LogCallback callback) {
-	static unique_ptr<LogAppender> appender;
 	const auto severity = static_cast<plog::Severity>(level);
+	static LogAppender *appender = nullptr;
+	static std::mutex mutex;
+	std::lock_guard lock(mutex);
 	if (appender) {
 		appender->callback = std::move(callback);
 		InitLogger(severity, nullptr); // change the severity
 	} else if (callback) {
-		appender = std::make_unique<LogAppender>();
+		appender = new LogAppender();
 		appender->callback = std::move(callback);
-		InitLogger(severity, appender.get());
+		InitLogger(severity, appender);
 	} else {
 		InitLogger(severity, nullptr); // log to cout
 	}
 }
 
 void InitLogger(plog::Severity severity, plog::IAppender *appender) {
-	static plog::ColorConsoleAppender<plog::TxtFormatter> consoleAppender;
-	static plog::Logger<0> *logger = nullptr;
+	using Logger = plog::Logger<PLOG_DEFAULT_INSTANCE_ID>;
+	static Logger *logger = nullptr;
 	static std::mutex mutex;
 	std::lock_guard lock(mutex);
 	if (!logger) {
-		logger = &plog::init(severity, appender ? appender : &consoleAppender);
-		PLOG_DEBUG << "Logger initialized";
+		PLOG_DEBUG << "Initializing logger";
+		logger = new Logger(severity);
+		if (appender) {
+			logger->addAppender(appender);
+		} else {
+			using ConsoleAppender = plog::ColorConsoleAppender<plog::TxtFormatter>;
+			static ConsoleAppender *consoleAppender = new ConsoleAppender();
+			logger->addAppender(consoleAppender);
+		}
 	} else {
 		logger->setMaxSeverity(severity);
 		if (appender)