diff options
Diffstat (limited to 'common/LoggerImpl.h')
| -rw-r--r-- | common/LoggerImpl.h | 56 |
1 files changed, 16 insertions, 40 deletions
diff --git a/common/LoggerImpl.h b/common/LoggerImpl.h index a07cead..35ac37a 100644 --- a/common/LoggerImpl.h +++ b/common/LoggerImpl.h @@ -1,5 +1,5 @@ #pragma once -#include "Logger.h" +#include "GFSDK_Logger.h" #include <cstdarg> #include <cstdio> @@ -10,58 +10,34 @@ public: LoggerWWSamples(nv::LogSeverity loggingLevel); virtual ~LoggerWWSamples() = default; - virtual void log(const char* text, nv::LogSeverity severity, const char* filename, int linenumber) override; - virtual void log(const wchar_t* text, nv::LogSeverity severity, const wchar_t* filename, int linenumber) override; +// virtual void log(const char* text, nv::LogSeverity severity, const char* filename, int linenumber) override; + virtual void log(nv::LogSeverity severity, const wchar_t* filename, int linenumber, const wchar_t* format, ...) override; nv::LogSeverity getLoggingLevel(); void setLoggingLevel(nv::LogSeverity newLevel); + static LoggerWWSamples* GetInstance() + { + static LoggerWWSamples Instance; + return &Instance; + } private: nv::LogSeverity LoggingLevel; }; -extern LoggerWWSamples* g_Logger; - -namespace wwsamples -{ - inline void log(nv::LogSeverity severity, const char* filename, int linenumber, const char* format, ...) - { - if (g_Logger == nullptr) - { - g_Logger = new LoggerWWSamples(); - } - - if (g_Logger->getLoggingLevel() > severity) - return; - - char buffer[1024]; - - va_list args; - va_start(args, format); -#if NV_GCC_FAMILY -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" -#endif - vsnprintf_s(buffer, sizeof(buffer), format, args); -#if NV_GCC_FAMILY -#pragma GCC diagnostic pop -#endif - va_end(args); - - g_Logger->log(buffer, severity, filename, linenumber); - } -} - +#ifndef NV_LOG +// NOTE: This assumes we're using wide strings! +#define WIDEWRAP2(s) L##s +#define WIDEWRAP1(s) WIDEWRAP2(s) -#ifndef NV_LOG /// <param name="__VA_ARGS__">format, ...</param> -#define NV_LOG(...) wwsamples::log(nv::LogSeverity::kInfo, __FILE__, __LINE__, __VA_ARGS__) +#define NV_LOG(...) LoggerWWSamples::GetInstance()->log(nv::LogSeverity::kInfo, WIDEWRAP1(__FILE__), __LINE__, __VA_ARGS__) /// <param name="__VA_ARGS__">format, ...</param> -#define NV_WARN(...) wwsamples::log(nv::LogSeverity::kWarning, __FILE__, __LINE__, __VA_ARGS__) +#define NV_WARN(...) LoggerWWSamples::GetInstance()->log(nv::LogSeverity::kWarning, WIDEWRAP1(__FILE__), __LINE__, __VA_ARGS__) /// <param name="__VA_ARGS__">format, ...</param> -#define NV_ERROR(...) wwsamples::log(nv::LogSeverity::kError, __FILE__, __LINE__, __VA_ARGS__) +#define NV_ERROR(...) LoggerWWSamples::GetInstance()->log(nv::LogSeverity::kError, WIDEWRAP1(__FILE__), __LINE__, __VA_ARGS__) /// <param name="__VA_ARGS__">format, ...</param> -#define NV_FATAL(...) wwsamples::log(nv::LogSeverity::kFatal, __FILE__, __LINE__, __VA_ARGS__) +#define NV_FATAL(...) LoggerWWSamples::GetInstance()->log(nv::LogSeverity::kFatal, WIDEWRAP1(__FILE__), __LINE__, __VA_ARGS__) #endif
\ No newline at end of file |