1 /*
2  *  Copyright (C) 2005-2021 Team Kodi (https://kodi.tv)
3  *
4  *  SPDX-License-Identifier: GPL-2.0-or-later
5  *  See LICENSE.md for more information.
6  */
7 
8 #include "Logger.h"
9 
10 #include "kodi/tools/StringUtils.h"
11 
12 using namespace tvheadend::utilities;
13 
Logger()14 Logger::Logger()
15 {
16   // Use an empty implementation by default
17   SetImplementation([](LogLevel level, const char* message) {});
18 }
19 
GetInstance()20 Logger& Logger::GetInstance()
21 {
22   static Logger instance;
23   return instance;
24 }
25 
Log(LogLevel level,const char * message,...)26 void Logger::Log(LogLevel level, const char* message, ...)
27 {
28   auto& logger = GetInstance();
29 
30   va_list arguments;
31   va_start(arguments, message);
32   const std::string logMessage = kodi::tools::StringUtils::FormatV(message, arguments);
33   va_end(arguments);
34 
35   logger.m_implementation(level, logMessage.c_str());
36 }
37 
SetImplementation(LoggerImplementation implementation)38 void Logger::SetImplementation(LoggerImplementation implementation)
39 {
40   m_implementation = implementation;
41 }
42