EduArt Sensor Ring Library 3.0.1
Loading...
Searching...
No Matches
Logger.hpp
Go to the documentation of this file.
1// Copyright (c) 2025 EduArt Robotik GmbH
2
9
10#pragma once
11
12#include <mutex>
13#include <set>
14#include <sstream>
15#include <string>
16
19
20namespace eduart {
21
22namespace logger {
23
28class SENSORRING_API Logger {
29public:
31 ~Logger() = default;
32
37 static Logger* getInstance() noexcept;
38
43 void registerClient(LoggerClient* client) noexcept;
44
49 void unregisterClient(LoggerClient* client) noexcept;
50
57 void log(const LogVerbosity verbosity, const std::string& msg) const;
58
65 void log(const LogVerbosity verbosity, const std::stringstream& msg) const;
66
67private:
69 Logger() = default;
70
71 mutable std::recursive_mutex _client_mutex;
72 using LockGuard = std::lock_guard<std::recursive_mutex>;
73
74 std::set<logger::LoggerClient*> _clients;
75};
76
77} // namespace logger
78
79} // namespace eduart
LoggerClient that can be registered with the Logger to receive log messages.
Control the import and export of Windows DLL symbols.
Observer interface of the Logger class. Defines the callback method that is triggered by the Logger.
Definition LoggerClient.hpp:51
void unregisterClient(LoggerClient *client) noexcept
Unregister a new LoggerClient to no longer be notified of log messages.
void registerClient(LoggerClient *client) noexcept
Register a new LoggerClient to be notified of future log messages.
void log(const LogVerbosity verbosity, const std::string &msg) const
Log a message that will be relayed to all registered observers.
~Logger()=default
Destructor.
static Logger * getInstance() noexcept
Get a reference to the instance of the Logger singleton.