109 lines
3.1 KiB
C
109 lines
3.1 KiB
C
#pragma once
|
|
|
|
#include "SaneSlateCommon.h"
|
|
#include "SaneSlateEngineMinimal.h"
|
|
|
|
#include "SaneSlateLog.generated.h"
|
|
|
|
// Straight from the Engine
|
|
UENUM(BlueprintType)
|
|
enum class EUnrealLogVerbosity : uint8
|
|
{
|
|
/** Not used */
|
|
NoLogging = 0,
|
|
|
|
/** Always prints a fatal error to console (and log file) and crashes (even if logging is disabled) */
|
|
// Fatal,
|
|
// Just use GASA_Fatal...
|
|
|
|
/**
|
|
* Prints an error to console (and log file).
|
|
* Commandlets and the editor collect and report errors. Error messages result in commandlet failure.
|
|
*/
|
|
Error = ELogVerbosity::Error,
|
|
|
|
/**
|
|
* Prints a warning to console (and log file).
|
|
* Commandlets and the editor collect and report warnings. Warnings can be treated as an error.
|
|
*/
|
|
Warning,
|
|
|
|
/** Prints a message to console (and log file) */
|
|
Display,
|
|
|
|
/** Prints a message to a log file (does not print to console) */
|
|
Log,
|
|
|
|
/**
|
|
* Prints a verbose message to a log file (if Verbose logging is enabled for the given category,
|
|
* usually used for detailed logging)
|
|
*/
|
|
Verbose,
|
|
|
|
/**
|
|
* Prints a verbose message to a log file (if VeryVerbose logging is enabled,
|
|
* usually used for detailed logging that would otherwise spam output)
|
|
*/
|
|
VeryVerbose,
|
|
};
|
|
|
|
DECLARE_LOG_CATEGORY_EXTERN(LogSaneSlate, Log, All);
|
|
|
|
SaneSlate_NS_BEGIN
|
|
|
|
using ELogV = EUnrealLogVerbosity;
|
|
|
|
#if NO_LOGGING
|
|
using FLogCategoryParam = FNoLoggingCategory;
|
|
#else
|
|
using FLogCategoryParam = FLogCategoryBase;
|
|
#endif
|
|
|
|
inline
|
|
void LogToFile(FString Message
|
|
, ELogV Verbosity = ELogV::Log
|
|
, bool DumpStack = false
|
|
, FLogCategoryParam& Category = LogSaneSlate
|
|
, int32 Line = __builtin_LINE()
|
|
, ANSICHAR const* File = __builtin_FILE()
|
|
, ANSICHAR const* Func = __builtin_FUNCTION() )
|
|
{
|
|
#if !UE_BUILD_SHIPPING && !NO_LOGGING
|
|
ELogVerbosity::Type EngineVerbosity = (ELogVerbosity::Type) Verbosity;
|
|
static UE::Logging::Private::FStaticBasicLogDynamicData LOG_Dynamic;
|
|
static UE::Logging::Private::FStaticBasicLogRecord
|
|
LOG_Static(TEXT("%s -- %hs %hs(%d)"), File, Line, EngineVerbosity, LOG_Dynamic);
|
|
if ((EngineVerbosity & ELogVerbosity::VerbosityMask) <= ELogVerbosity::COMPILED_IN_MINIMUM_VERBOSITY)
|
|
{
|
|
if ((EngineVerbosity & ELogVerbosity::VerbosityMask) <= Category.GetVerbosity())
|
|
{
|
|
if ( ! Category.IsSuppressed(EngineVerbosity))
|
|
{
|
|
if (DumpStack)
|
|
FDebug::DumpStackTraceToLog(EngineVerbosity);
|
|
BasicLog(Category, &LOG_Static, *Message, File, Func, Line);
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
|
|
struct LogParams {
|
|
bool bToScreen = false;
|
|
float TimeToDisplay = 5.f;
|
|
FColor DisplayColor = FColor::Cyan;
|
|
bool bDisplayNewerOnTop = true;
|
|
uint64 ScreenMsgKey = -1;
|
|
bool DumpStack = false;
|
|
};
|
|
void Log(FString Message
|
|
, ELogV Verbosity = ELogV::Log
|
|
, FLogCategoryParam& Category = LogSaneSlate
|
|
, LogParams Params = {}
|
|
, int32 Line = __builtin_LINE()
|
|
, ANSICHAR const* File = __builtin_FILE()
|
|
, ANSICHAR const* Func = __builtin_FUNCTION() );
|
|
|
|
SaneSlate_NS_END
|