/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Logging.hpp Date: 2021-9-21 Author: Reece ***/ #pragma once #include "ILogger.hpp" #include "IBasicSink.hpp" #include "IBasicSinkRB.hpp" #include "Sinks.hpp" namespace Aurora::Console::Logging { #if defined(_AUHAS_FMT) template static inline void WriteLinef(const AuString &tag, const AuString &msg, T&& ... args) { WriteLine(ConsoleMessage(EAnsiColor::eReset, tag, fmt::format(msg, std::forward(args)...))); } template static inline void WriteLinef(EAnsiColor color, const AuString &tag, const AuString &msg, T&& ... args) { WriteLine(ConsoleMessage(color, tag, fmt::format(msg, std::forward(args)...))); } template static inline void LogVerbose(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eYellow, "Verbose", line, std::forward(args)...); } #if defined(STAGING) || defined(DEBUG) template static inline void LogVerboseNoShip(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eYellow, "Verbose", line, std::forward(args)...); } #else #define LogVerboseNoShip(...) DoNothing() #endif static inline void DoNothing() { } template static inline void LogInfo(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eGreen, "Info", line, std::forward(args)...); } template static inline void LogDbg(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eYellow, "Debug", line, std::forward(args)...); } template static inline void LogWarn(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eRed, "Warn", line, std::forward(args)...); } template static inline void LogError(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eBoldRed, "Error", line, std::forward(args)...); } template static inline void LogGame(const AuString &line, T&& ... args) { WriteLinef(EAnsiColor::eBlue, "Game", line, std::forward(args)...); } #endif } #define ADD_AU_GLOBAL_ALIAS(level)\ template \ static inline void AuLog ## level(T&& ... args) \ { \ Aurora::Console::Logging::Log ## level(std::forward(args)...); \ } ADD_AU_GLOBAL_ALIAS(Info) ADD_AU_GLOBAL_ALIAS(Dbg) ADD_AU_GLOBAL_ALIAS(Warn) ADD_AU_GLOBAL_ALIAS(Error) ADD_AU_GLOBAL_ALIAS(Game) ADD_AU_GLOBAL_ALIAS(Verbose) #if defined(STAGING) || defined(DEBUG) ADD_AU_GLOBAL_ALIAS(VerboseNoShip) #else #define AuLogVerboseNoShip(...) #endif