Program Listing for File UnrealSink.h
↰ Return to documentation for file (axr.sdk/logging/UnrealSink.h
)
// Copyright (C) AcceleratXR, Inc. All rights reserved.
#pragma once
#include "Async/Async.h"
#include "OnlineSubsystem.h"
#ifdef _WIN32
#include "MinimalWindowsApi.h"
#endif
#include <spdlog/sinks/sink.h>
namespace axr
{
namespace sdk
{
namespace logging
{
class ONLINESUBSYSTEMAXR_API UnrealSink : public spdlog::sinks::sink
{
public:
UnrealSink() {}
virtual ~UnrealSink() = default;
virtual void log(const spdlog::details::log_msg& msg)
{
if (msg.level == spdlog::level::off)
{
return;
}
FString message(msg.payload.size(), msg.payload.data());
AsyncTask(ENamedThreads::GameThread, [msg, message]()
{
switch (msg.level)
{
case spdlog::level::critical: UE_LOG(LogOnline, Fatal, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
case spdlog::level::debug: UE_LOG(LogOnline, Verbose, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
case spdlog::level::err: UE_LOG(LogOnline, Error, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
case spdlog::level::trace: UE_LOG(LogOnline, VeryVerbose, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
case spdlog::level::warn: UE_LOG(LogOnline, Warning, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
default: UE_LOG(LogOnline, Log, TEXT("%s%s"), TEXT("AXRCoreSDK: "), *message); break;
}
});
}
virtual void flush() {}
virtual void set_pattern(const std::string& pattern) {}
virtual void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) {}
};
} // namespace logging
} // namespace sdk
} // namespace axr