83 lines
2.0 KiB
C++
83 lines
2.0 KiB
C++
|
|
// Copyright (c) 2024 Sentry. All Rights Reserved.
|
|||
|
|
|
|||
|
|
#include "SentryOutputDevice.h"
|
|||
|
|
|
|||
|
|
#include "SentryModule.h"
|
|||
|
|
#include "SentrySettings.h"
|
|||
|
|
#include "SentrySubsystem.h"
|
|||
|
|
|
|||
|
|
#include "Engine/Engine.h"
|
|||
|
|
|
|||
|
|
void FSentryOutputDevice::Serialize(const TCHAR* V, ELogVerbosity::Type Verbosity, const FName& Category)
|
|||
|
|
{
|
|||
|
|
const FString Message = FString(V).TrimStartAndEnd();
|
|||
|
|
if (Message.IsEmpty() || Message.StartsWith(TEXT("[Callstack]")))
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const USentrySettings* Settings = FSentryModule::Get().GetSettings();
|
|||
|
|
|
|||
|
|
bool bAddBreadcrumb;
|
|||
|
|
|
|||
|
|
ESentryLevel BreadcrumbLevel = ESentryLevel::Debug;
|
|||
|
|
|
|||
|
|
switch (Verbosity)
|
|||
|
|
{
|
|||
|
|
case ELogVerbosity::Fatal:
|
|||
|
|
bAddBreadcrumb = Settings->AutomaticBreadcrumbsForLogs.bOnFatalLog;
|
|||
|
|
BreadcrumbLevel = ESentryLevel::Fatal;
|
|||
|
|
break;
|
|||
|
|
case ELogVerbosity::Error:
|
|||
|
|
bAddBreadcrumb = Settings->AutomaticBreadcrumbsForLogs.bOnErrorLog;
|
|||
|
|
BreadcrumbLevel = ESentryLevel::Error;
|
|||
|
|
break;
|
|||
|
|
case ELogVerbosity::Warning:
|
|||
|
|
bAddBreadcrumb = Settings->AutomaticBreadcrumbsForLogs.bOnWarningLog;
|
|||
|
|
BreadcrumbLevel = ESentryLevel::Warning;
|
|||
|
|
break;
|
|||
|
|
case ELogVerbosity::Display:
|
|||
|
|
case ELogVerbosity::Log:
|
|||
|
|
bAddBreadcrumb = Settings->AutomaticBreadcrumbsForLogs.bOnInfoLog;
|
|||
|
|
BreadcrumbLevel = ESentryLevel::Info;
|
|||
|
|
break;
|
|||
|
|
case ELogVerbosity::Verbose:
|
|||
|
|
case ELogVerbosity::VeryVerbose:
|
|||
|
|
bAddBreadcrumb = Settings->AutomaticBreadcrumbsForLogs.bOnDebugLog;
|
|||
|
|
BreadcrumbLevel = ESentryLevel::Debug;
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
bAddBreadcrumb = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!bAddBreadcrumb)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
USentrySubsystem* SentrySubsystem = GEngine->GetEngineSubsystem<USentrySubsystem>();
|
|||
|
|
if(!SentrySubsystem || !SentrySubsystem->IsEnabled())
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SentrySubsystem->AddBreadcrumbWithParams(Message, Category.ToString(), FString(), TMap<FString, FString>(), BreadcrumbLevel);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool FSentryOutputDevice::CanBeUsedOnAnyThread() const
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool FSentryOutputDevice::CanBeUsedOnMultipleThreads() const
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if !UE_VERSION_OLDER_THAN(5, 1, 0)
|
|||
|
|
bool FSentryOutputDevice::CanBeUsedOnPanicThread() const
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
#endif
|