12#include "enrollment/Export.h"
31 virtual const char*
Compose() = 0;
33 LogMessage() =
default;
34 LogMessage(LogMessage&&) =
delete;
35 LogMessage(
const LogMessage&) =
delete;
36 LogMessage& operator=(LogMessage&&) =
delete;
37 LogMessage& operator=(
const LogMessage&) =
delete;
38 virtual ~LogMessage() =
default;
64 Logger(
const Logger&) =
delete;
65 Logger(Logger&&) =
delete;
66 Logger& operator=(
const Logger&) =
delete;
67 Logger& operator=(Logger&&) =
delete;
69 virtual ~Logger() =
default;
76 class NullLogger :
public Logger
188 ForwardingComposer msg(composer, composerData);
203 ForwardingComposer msg(composer, composerData);
218 ForwardingComposer msg(composer, composerData);
228 : log(std::move(logger))
239 std::shared_ptr<Logger> log;
244 const char* Compose() final
254 ForwardingComposer() =
delete;
255 ForwardingComposer(ForwardingComposer&&) =
delete;
256 ForwardingComposer(
const ForwardingComposer&) =
delete;
257 ForwardingComposer& operator=(ForwardingComposer&&) =
delete;
258 ForwardingComposer& operator=(
const ForwardingComposer&) =
delete;
259 ~ForwardingComposer() =
default;
267 extern "C" INNO_ENROLLMENT_API
void inno_local_image_redirect_error(LoggerCallBacks lcb);
282 static std::shared_ptr<Logger>
Get()
284 return GlobalLogger::Instance().GetInternal();
292 static void Set(std::shared_ptr<Logger> logger)
294 if (logger ==
nullptr)
299 GlobalLogger::Instance().SetInternal(std::move(logger));
310 std::shared_ptr<Logger> pe;
311 std::unique_ptr<CallbackLogger> cbLogger;
316 std::shared_ptr<Logger> GetInternal()
318 const std::scoped_lock lock(peMux);
322 static GlobalLogger& Instance()
324 static GlobalLogger e(std::make_shared<NullLogger>());
328 void SetInternal(std::shared_ptr<Logger> logger)
330 if (logger !=
nullptr)
332 UpdateLogger(std::move(logger));
336 UpdateLogger(std::make_shared<NullLogger>());
342 explicit GlobalLogger(std::shared_ptr<Logger> e)
344 , cbLogger(std::make_unique<CallbackLogger>(pe))
346 inno_local_image_redirect_error(cbLogger->GetCallbacks());
351 void UpdateLogger(std::shared_ptr<Logger> logger)
353 const std::scoped_lock lock(peMux);
354 pe = std::move(logger);
355 auto replacingCallbackLogger = std::make_unique<CallbackLogger>(pe);
356 inno_local_image_redirect_error(replacingCallbackLogger->GetCallbacks());
357 cbLogger = std::move(replacingCallbackLogger);
CallbackLogger is logger for binary part of libary due to C boundary.
Definition Logger.h:157
static void LogInfo(void *log, LogMessageCallback composer, void *composerData)
Log message on info level.
Definition Logger.h:183
CallbackLogger(std::shared_ptr< Logger > logger)
Construct a new Callback Logger object.
Definition Logger.h:226
static void LogError(void *log, LogMessageCallback composer, void *composerData)
Log message on error level.
Definition Logger.h:198
static void LogDebug(void *log, LogMessageCallback composer, void *composerData)
Log message on debug level.
Definition Logger.h:213
LoggerCallBacks GetCallbacks() const
Get the Callbacks object.
Definition Logger.h:166
Holds instance of Logger.
Definition Logger.h:275
static std::shared_ptr< Logger > Get()
Provides current logger.
Definition Logger.h:281
static void Set(std::shared_ptr< Logger > logger)
Sets new global logger.
Definition Logger.h:291
Compose Logger message.
Definition Logger.h:24
virtual const char * Compose()=0
It composes message.
Interface for library logging.
Definition Logger.h:45
virtual void LogInfo(LogMessage &composer)=0
It logs info message.
virtual void LogError(LogMessage &composer)=0
It logs error message.
virtual void LogDebug(LogMessage &composer)=0
It logs debug message.
Null argument is not allowed.
Definition EnrollmentException.h:156
The logger implementation that do not logs.
Definition Logger.h:76
void LogDebug(LogMessage &) final
It ignores debug messages.
Definition Logger.h:93
void LogError(LogMessage &) final
It ignores error messages.
Definition Logger.h:87
void LogInfo(LogMessage &) final
It ignores info messages.
Definition Logger.h:81
const char *(*)(void *composerData) LogMessageCallback
Function pointer to compose message in binary.
Definition Logger.h:114
void(*)(void *logger, LogMessageCallback composer, void *composerData) LoggerCallback
Function pointer to log from binary.
Definition Logger.h:127
LoggerCallBacks contains logger handle and function pointers as callbacks.
Definition Logger.h:137
LoggerCallback logDebug
Callback to log debug level.
Definition Logger.h:146
LoggerCallback logInfo
Callback to log info level.
Definition Logger.h:142
void * log
Logger handle.
Definition Logger.h:140
LoggerCallback logError
Callback to error info level.
Definition Logger.h:144