Skip to content
Extraits de code Groupes Projets

Add clean logs support + dependent MR

Fusionnées Kubat a demandé de fusionner log-macros vers master
1 fichier
+ 16
4
Comparer les modifications
  • Côte à côte
  • En ligne
+ 16
4
@@ -2,7 +2,10 @@
#include "Utils.hh"
#define VIVY_GET_LOGGER(sink, cat) std::make_shared<Logger>(sink.get(), cat)
// Create a logger with a category
#define VIVY_GET_LOGGER(sink, cat) std::make_shared<Logger>(sink.get(), cat)
// Log something in a logger
#define VIVY_LOG_WITH_LEVEL(log, level) log->logEvent(__FILE__, __func__, __LINE__, level)
#define VIVY_LOG_WARN(log) VIVY_LOG_WITH_LEVEL(log, LogLevel::Warning)
#define VIVY_LOG_DEBUG(log) VIVY_LOG_WITH_LEVEL(log, LogLevel::Debug)
@@ -10,13 +13,21 @@
#define VIVY_LOG_ERR(log) VIVY_LOG_WITH_LEVEL(log, LogLevel::Error)
#define VIVY_LOG_FATAL(log) VIVY_LOG_WITH_LEVEL(log, LogLevel::Critical)
// Declare a sink, with the utility function/method `flushLogSink`. This is
// intended to be used in an object to not polluate namespaces.
#define VIVY_DCL_LOG_SINK(sink) \
std::shared_ptr<LogSink> sink{ LogSink::newSink() }; \
void flushLogSink() const noexcept { sink->flush(); }
// Declare a dispatch for a sink with no arguments in the constructor.
#define VIVY_DCL_LOG_DISPATCH(sink, name, dispatch) \
std::shared_ptr<dispatch> name{ sink->newDispatcher<dispatch>() };
// Declare a dispatch for a sink with arguments in the constructor.
#define VIVY_DCL_LOG_DISPATCH_WITH(sink, name, dispatch, ...) \
std::shared_ptr<dispatch> name{ sink->newDispatcher<dispatch>(__VA_ARGS__) };
// Install logger for the object.
#define VIVY_LOGGABLE_OBJECT(sink, name, logger) \
std::shared_ptr<Logger> logger{ VIVY_GET_LOGGER(sink, name) }; \
LogMessage logFatal() const noexcept { return VIVY_LOG_FATAL(logger); } \
@@ -90,10 +101,11 @@ public:
void recieveLogMessage(const Logger *const, LogMessage &&) noexcept;
void flush() noexcept;
template <Derived<LogSinkDispatcher> DispatcherType>
std::shared_ptr<DispatcherType> newDispatcher() noexcept
template <Derived<LogSinkDispatcher> DispatcherType, typename... Args>
std::shared_ptr<DispatcherType> newDispatcher(Args &&...args) noexcept
{
std::shared_ptr<DispatcherType> dispatch = std::make_shared<DispatcherType>();
std::shared_ptr<DispatcherType> dispatch =
std::make_shared<DispatcherType>(std::forward<Args>(args)...);
registerLogDispatcher(dispatch);
return dispatch;
}
Chargement en cours