UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StructuredLog.h File Reference

Go to the source code of this file.

Classes

class  UE::FLogTime
 
class  UE::FLogRecord
 
struct  UE::CSerializableForLog
 
struct  UE::Logging::Private::FStaticLogDynamicData
 
struct  UE::Logging::Private::FStaticLogRecord
 
struct  UE::Logging::Private::FStaticLocalizedLogRecord
 
struct  UE::Logging::Private::FLogField
 
struct  UE::Logging::Private::TLogFieldName< NameType >
 
struct  UE::Logging::Private::FLogFieldCreator
 
struct  UE::Logging::Private::FLogContext
 

Namespaces

namespace  UE
 
namespace  UE::Logging
 
namespace  UE::Logging::Private
 

Macros

#define UE_API   CORE_API
 
#define UE_LOGFMT(CategoryName, Verbosity, Format, ...)   UE_PRIVATE_LOGFMT_CALL(UE_LOGFMT_EX, (CategoryName, Verbosity, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))
 
#define UE_CLOGFMT(Condition, CategoryName, Verbosity, Format, ...)   UE_PRIVATE_LOGFMT_CALL(UE_CLOGFMT_EX, (Condition, CategoryName, Verbosity, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))
 
#define UE_LOGFMT_EX(CategoryName, Verbosity, Format, ...)   UE_PRIVATE_LOGFMT(UE_EMPTY, CategoryName, Verbosity, Format, ##__VA_ARGS__)
 
#define UE_CLOGFMT_EX(Condition, CategoryName, Verbosity, Format, ...)   UE_PRIVATE_LOGFMT(if (Condition), CategoryName, Verbosity, Format, ##__VA_ARGS__)
 
#define UE_LOGFMT_LOC(CategoryName, Verbosity, Key, Format, ...)    UE_LOGFMT_NSLOC(CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)
 
#define UE_LOGFMT_NSLOC(CategoryName, Verbosity, Namespace, Key, Format, ...)    UE_PRIVATE_LOGFMT_CALL(UE_LOGFMT_NSLOC_EX, (CategoryName, Verbosity, Namespace, Key, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))
 
#define UE_CLOGFMT_LOC(Condition, CategoryName, Verbosity, Key, Format, ...)    UE_CLOGFMT_NSLOC(Condition, CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)
 
#define UE_CLOGFMT_NSLOC(Condition, CategoryName, Verbosity, Namespace, Key, Format, ...)    UE_PRIVATE_LOGFMT_CALL(UE_CLOGFMT_NSLOC_EX, (Condition, CategoryName, Verbosity, Namespace, Key, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))
 
#define UE_LOGFMT_LOC_EX(CategoryName, Verbosity, Key, Format, ...)    UE_LOGFMT_NSLOC_EX(CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)
 
#define UE_LOGFMT_NSLOC_EX(CategoryName, Verbosity, Namespace, Key, Format, ...)    UE_PRIVATE_LOGFMT_LOC(UE_EMPTY, CategoryName, Verbosity, Namespace, Key, Format, ##__VA_ARGS__)
 
#define UE_CLOGFMT_LOC_EX(Condition, CategoryName, Verbosity, Key, Format, ...)    UE_CLOGFMT_NSLOC_EX(Condition, CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)
 
#define UE_CLOGFMT_NSLOC_EX(Condition, CategoryName, Verbosity, Namespace, Key, Format, ...)    UE_PRIVATE_LOGFMT_LOC(if (Condition), CategoryName, Verbosity, Namespace, Key, Format, ##__VA_ARGS__)
 
#define UE_LOGFMT_FIELD(Name, Value)   UE_PRIVATE_LOGFMT_FIELD((Name, Value))
 
#define UE_LOGFMT_VALUE(Value)   Value
 
#define UE_LOG_CONTEXT(Name, ...)   ::UE::Logging::Private::FLogContext ANONYMOUS_VARIABLE(LogContext_)(Name, ##__VA_ARGS__)
 
#define UE_PRIVATE_LOG_CATEGORY(CategoryName)   CategoryName
 
#define UE_PRIVATE_LOGFMT(Condition, CategoryName, Verbosity, Format, ...)
 
#define UE_PRIVATE_LOGFMT_LOC(Condition, CategoryName, Verbosity, Namespace, Key, Format, ...)
 
#define UE_PRIVATE_LOGFMT_LOG_IF_ACTIVE(Condition, CategoryName, Verbosity, Log, ...)
 
#define UE_PRIVATE_LOGFMT_AGGREGATE(...)   {__VA_ARGS__}
 
#define UE_PRIVATE_LOGFMT_FIELD(Field)   UE_PRIVATE_LOGFMT_FIELD_EXPAND(UE_PRIVATE_LOGFMT_NAMED_FIELD Field)
 
#define UE_PRIVATE_LOGFMT_NAMED_FIELD(Name, ...)   UE_PRIVATE_LOGFMT_NAMED_FIELD ::UE::Logging::Private::CheckFieldName(Name), __VA_ARGS__
 
#define UE_PRIVATE_LOGFMT_FIELD_EXPAND(...)   UE_PRIVATE_LOGFMT_FIELD_EXPAND_INNER(__VA_ARGS__)
 
#define UE_PRIVATE_LOGFMT_FIELD_EXPAND_INNER(...)   UE_PRIVATE_LOGFMT_STRIP_ ## __VA_ARGS__
 
#define UE_PRIVATE_LOGFMT_STRIP_UE_PRIVATE_LOGFMT_NAMED_FIELD
 
#define UE_PRIVATE_LOGFMT_FIELDS(...)   UE_PRIVATE_LOGFMT_CALL(UE_JOIN(UE_PRIVATE_LOGFMT_FIELDS_, UE_PRIVATE_LOGFMT_COUNT(__VA_ARGS__)), (__VA_ARGS__))
 
#define UE_PRIVATE_LOGFMT_FIELDS_0()
 
#define UE_PRIVATE_LOGFMT_FIELDS_1(A)   , UE_PRIVATE_LOGFMT_FIELD(A)
 
#define UE_PRIVATE_LOGFMT_FIELDS_2(A, B)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B)
 
#define UE_PRIVATE_LOGFMT_FIELDS_3(A, B, C)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C)
 
#define UE_PRIVATE_LOGFMT_FIELDS_4(A, B, C, D)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D)
 
#define UE_PRIVATE_LOGFMT_FIELDS_5(A, B, C, D, E)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E)
 
#define UE_PRIVATE_LOGFMT_FIELDS_6(A, B, C, D, E, F)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F)
 
#define UE_PRIVATE_LOGFMT_FIELDS_7(A, B, C, D, E, F, G)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G)
 
#define UE_PRIVATE_LOGFMT_FIELDS_8(A, B, C, D, E, F, G, H)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H)
 
#define UE_PRIVATE_LOGFMT_FIELDS_9(A, B, C, D, E, F, G, H, I)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I)
 
#define UE_PRIVATE_LOGFMT_FIELDS_10(A, B, C, D, E, F, G, H, I, J)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J)
 
#define UE_PRIVATE_LOGFMT_FIELDS_11(A, B, C, D, E, F, G, H, I, J, K)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K)
 
#define UE_PRIVATE_LOGFMT_FIELDS_12(A, B, C, D, E, F, G, H, I, J, K, L)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K), UE_PRIVATE_LOGFMT_FIELD(L)
 
#define UE_PRIVATE_LOGFMT_FIELDS_13(A, B, C, D, E, F, G, H, I, J, K, L, M)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K), UE_PRIVATE_LOGFMT_FIELD(L), UE_PRIVATE_LOGFMT_FIELD(M)
 
#define UE_PRIVATE_LOGFMT_FIELDS_14(A, B, C, D, E, F, G, H, I, J, K, L, M, N)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K), UE_PRIVATE_LOGFMT_FIELD(L), UE_PRIVATE_LOGFMT_FIELD(M), UE_PRIVATE_LOGFMT_FIELD(N)
 
#define UE_PRIVATE_LOGFMT_FIELDS_15(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K), UE_PRIVATE_LOGFMT_FIELD(L), UE_PRIVATE_LOGFMT_FIELD(M), UE_PRIVATE_LOGFMT_FIELD(N), UE_PRIVATE_LOGFMT_FIELD(O)
 
#define UE_PRIVATE_LOGFMT_FIELDS_16(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)   , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D), UE_PRIVATE_LOGFMT_FIELD(E), UE_PRIVATE_LOGFMT_FIELD(F), UE_PRIVATE_LOGFMT_FIELD(G), UE_PRIVATE_LOGFMT_FIELD(H), UE_PRIVATE_LOGFMT_FIELD(I), UE_PRIVATE_LOGFMT_FIELD(J), UE_PRIVATE_LOGFMT_FIELD(K), UE_PRIVATE_LOGFMT_FIELD(L), UE_PRIVATE_LOGFMT_FIELD(M), UE_PRIVATE_LOGFMT_FIELD(N), UE_PRIVATE_LOGFMT_FIELD(O), UE_PRIVATE_LOGFMT_FIELD(P)
 
#define UE_PRIVATE_LOGFMT_COUNT(...)   UE_PRIVATE_LOGFMT_CALL(UE_PRIVATE_LOGFMT_COUNT_IMPL, (_, ##__VA_ARGS__, 16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))
 
#define UE_PRIVATE_LOGFMT_COUNT_IMPL(_, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Count, ...)   Count
 
#define UE_PRIVATE_LOGFMT_CALL(F, A)   UE_PRIVATE_LOGFMT_EXPAND(F A)
 
#define UE_PRIVATE_LOGFMT_EXPAND(X)   X
 

Functions

template<typename ValueType UE_REQUIRES>
void UE::SerializeForLog (FCbWriter &Writer, ValueType &&Value)
 
template<typename ValueType UE_REQUIRES>
void UE::CallSerializeForLog (FCbWriter &Writer, ValueType &&Value)
 
template<typename ValueType UE_REQUIRES>
void SerializeForLog (FCbWriter &Writer, const TOptional< ValueType > &Optional)
 
template<typename NameType >
constexpr TLogFieldName< NameTypeUE::Logging::Private::CheckFieldName (NameType &&Name)
 
template<typename LogType , typename... FieldArgTypes>
UE_COLD UE_DEBUG_SECTION void UE::Logging::Private::LogWithFields (const FLogCategoryBase &Category, const LogType &Log, FieldArgTypes &&... FieldArgs)
 
template<typename LogType , typename... FieldArgTypes>
UE_COLD UE_DEBUG_SECTION void UE::Logging::Private::FatalLogWithFields (const FLogCategoryBase &Category, const LogType &Log, FieldArgTypes &&... FieldArgs)
 

Macro Definition Documentation

◆ UE_API

#define UE_API   CORE_API

◆ UE_CLOGFMT

#define UE_CLOGFMT (   Condition,
  CategoryName,
  Verbosity,
  Format,
  ... 
)    UE_PRIVATE_LOGFMT_CALL(UE_CLOGFMT_EX, (Condition, CategoryName, Verbosity, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))

Conditional UE_LOGFMT.

◆ UE_CLOGFMT_EX

#define UE_CLOGFMT_EX (   Condition,
  CategoryName,
  Verbosity,
  Format,
  ... 
)    UE_PRIVATE_LOGFMT(if (Condition), CategoryName, Verbosity, Format, ##__VA_ARGS__)

Conditional UE_LOGFMT_EX.

◆ UE_CLOGFMT_LOC

#define UE_CLOGFMT_LOC (   Condition,
  CategoryName,
  Verbosity,
  Key,
  Format,
  ... 
)     UE_CLOGFMT_NSLOC(Condition, CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)

Conditional UE_LOGFMT_LOC.

◆ UE_CLOGFMT_LOC_EX

#define UE_CLOGFMT_LOC_EX (   Condition,
  CategoryName,
  Verbosity,
  Key,
  Format,
  ... 
)     UE_CLOGFMT_NSLOC_EX(Condition, CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)

Conditional UE_LOGFMT_LOC_EX.

◆ UE_CLOGFMT_NSLOC

#define UE_CLOGFMT_NSLOC (   Condition,
  CategoryName,
  Verbosity,
  Namespace,
  Key,
  Format,
  ... 
)     UE_PRIVATE_LOGFMT_CALL(UE_CLOGFMT_NSLOC_EX, (Condition, CategoryName, Verbosity, Namespace, Key, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))

◆ UE_CLOGFMT_NSLOC_EX

#define UE_CLOGFMT_NSLOC_EX (   Condition,
  CategoryName,
  Verbosity,
  Namespace,
  Key,
  Format,
  ... 
)     UE_PRIVATE_LOGFMT_LOC(if (Condition), CategoryName, Verbosity, Namespace, Key, Format, ##__VA_ARGS__)

◆ UE_LOG_CONTEXT

Registers a context on the calling thread, by name, with an optional value.

The optional value can be anything that serializes to compact binary using FCbWriter or SerializeForLog. Context is unregistered when it goes out of scope. Context is overridden by a newer context with the same name. Context is overridden by a field of the same name in the log record. Context is copied to FLogRecord::Fields for every log record created in the lifetime of the context. Context names are written to FLogRecord::Fields in an array named $Context. Contexts can be visited by calling VisitLogContext.

Examples: UE_LOG_CONTEXT("Loading"); UE_LOG_CONTEXT("Count", 123.0); UE_LOG_CONTEXT("Asset", FAssetLog(AssetPath));

◆ UE_LOGFMT

#define UE_LOGFMT (   CategoryName,
  Verbosity,
  Format,
  ... 
)    UE_PRIVATE_LOGFMT_CALL(UE_LOGFMT_EX, (CategoryName, Verbosity, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))

Records a structured log event if this category is active at this level of verbosity.

Supports either positional or named parameters, but not a mix of these styles.

Positional: The field values must exactly match the fields referenced by Format. UE_LOGFMT(LogCore, Warning, "Loading '{Name}' failed with error {Error}", Package->GetName(), ErrorCode);

Named: The fields must contain every field referenced by Format. Order is irrelevant and extra fields are permitted. UE_LOGFMT(LogCore, Warning, "Loading '{Name}' failed with error {Error}", ("Name", Package->GetName()), ("Error", ErrorCode), ("Flags", LoadFlags));

Field names must match "[A-Za-z0-9_]+" and must be unique within this log event. Field values will be serialized using SerializeForLog or operator<<(FCbWriter&, FieldType).

Parameters
CategoryNameName of a log category declared by DECLARE_LOG_CATEGORY_*.
VerbosityName of a log verbosity level from ELogVerbosity.
FormatFormat string in the style of FLogTemplate.
Fields[0-16]Zero to sixteen fields or field values.

◆ UE_LOGFMT_EX

#define UE_LOGFMT_EX (   CategoryName,
  Verbosity,
  Format,
  ... 
)    UE_PRIVATE_LOGFMT(UE_EMPTY, CategoryName, Verbosity, Format, ##__VA_ARGS__)

Records a structured log event if this category is active at this level of verbosity.

This has the same functionality as UE_LOGFMT but removes the limit on field count.

Positional: Values must be wrapped in UE_LOGFMT_VALUE. UE_LOGFMT_EX(LogCore, Warning, "Loading '{Name}' failed with error {Error}", UE_LOGFMT_VALUE(Package->GetName()), UE_LOGFMT_VALUE(ErrorCode));

Named: Fields must be wrapped in UE_LOGFMT_FIELD. UE_LOGFMT_EX(LogCore, Warning, "Loading '{Name}' failed with error {Error}", UE_LOGFMT_FIELD("Name", Package->GetName()), UE_LOGFMT_FIELD("Error", ErrorCode), UE_LOGFMT_FIELD("Flags", LoadFlags));

◆ UE_LOGFMT_FIELD

#define UE_LOGFMT_FIELD (   Name,
  Value 
)    UE_PRIVATE_LOGFMT_FIELD((Name, Value))

Expands to a named structured log field. UE_LOGFMT_FIELD("Name", Value)

◆ UE_LOGFMT_LOC

#define UE_LOGFMT_LOC (   CategoryName,
  Verbosity,
  Key,
  Format,
  ... 
)     UE_LOGFMT_NSLOC(CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)

Records a localized structured log event if this category is active at this level of verbosity.

Example: UE_LOGFMT_LOC(LogCore, Warning, "LoadingFailed", "Loading '{Name}' failed with error {Error}", ("Name", Package->GetName()), ("Error", ErrorCode), ("Flags", LoadFlags));

Field names must match "[A-Za-z0-9_]+" and must be unique within this log event. Field values will be serialized using SerializeForLog or operator<<(FCbWriter&, FieldType). The fields must contain every field referenced by Format. Order is irrelevant and extra fields are permitted.

Parameters
CategoryNameName of a log category declared by DECLARE_LOG_CATEGORY_*.
VerbosityName of a log verbosity level from ELogVerbosity.
NamespaceNamespace for the format FText, or LOCTEXT_NAMESPACE for the non-NS macro.
KeyKey for the format FText that is unique within the namespace.
FormatFormat string in the style of FTextFormat.
Fields[0-16]Zero to sixteen fields in the format ("Name", Value).

◆ UE_LOGFMT_LOC_EX

#define UE_LOGFMT_LOC_EX (   CategoryName,
  Verbosity,
  Key,
  Format,
  ... 
)     UE_LOGFMT_NSLOC_EX(CategoryName, Verbosity, LOCTEXT_NAMESPACE, Key, Format, ##__VA_ARGS__)

Records a localized structured log event if this category is active at this level of verbosity.

Example: UE_LOGFMT_LOC_EX(LogCore, Warning, "LoadingFailed", "Loading '{PackageName}' failed with error {Error}", UE_LOGFMT_FIELD("Name", Package->GetName()), UE_LOGFMT_FIELD("Error", ErrorCode), UE_LOGFMT_FIELD("Flags", LoadFlags));

Same as UE_LOGFMT_LOC and works for any number of fields. Fields must be written as UE_LOGFMT_FIELD("Name", Value).

◆ UE_LOGFMT_NSLOC

#define UE_LOGFMT_NSLOC (   CategoryName,
  Verbosity,
  Namespace,
  Key,
  Format,
  ... 
)     UE_PRIVATE_LOGFMT_CALL(UE_LOGFMT_NSLOC_EX, (CategoryName, Verbosity, Namespace, Key, Format UE_PRIVATE_LOGFMT_FIELDS(__VA_ARGS__)))

◆ UE_LOGFMT_NSLOC_EX

#define UE_LOGFMT_NSLOC_EX (   CategoryName,
  Verbosity,
  Namespace,
  Key,
  Format,
  ... 
)     UE_PRIVATE_LOGFMT_LOC(UE_EMPTY, CategoryName, Verbosity, Namespace, Key, Format, ##__VA_ARGS__)

◆ UE_LOGFMT_VALUE

#define UE_LOGFMT_VALUE (   Value)    Value

Expands to a structured log value. UE_LOGFMT_VALUE(Value)

◆ UE_PRIVATE_LOG_CATEGORY

#define UE_PRIVATE_LOG_CATEGORY (   CategoryName)    CategoryName

◆ UE_PRIVATE_LOGFMT

#define UE_PRIVATE_LOGFMT (   Condition,
  CategoryName,
  Verbosity,
  Format,
  ... 
)
Value:
do \
{ \
if constexpr ((::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) == ::ELogVerbosity::Fatal || \
((::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) <= ::ELogVerbosity::COMPILED_IN_MINIMUM_VERBOSITY && \
(::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) <= UE_PRIVATE_LOG_CATEGORY(CategoryName).CompileTimeVerbosity)) \
{ \
static ::UE::Logging::Private::FStaticLogDynamicData LOG_Dynamic; \
static constexpr ::UE::Logging::Private::FStaticLogRecord LOG_Static UE_PRIVATE_LOGFMT_AGGREGATE(TEXT(Format), __builtin_FILE(), __builtin_LINE(), ::ELogVerbosity::Verbosity, LOG_Dynamic); \
UE_PRIVATE_LOGFMT_LOG_IF_ACTIVE(Condition, CategoryName, Verbosity, LOG_Static, ##__VA_ARGS__); \
} \
} \
while (false)
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_PRIVATE_LOG_CATEGORY(CategoryName)
Definition StructuredLog.h:538
#define UE_PRIVATE_LOGFMT_AGGREGATE(...)
Definition StructuredLog.h:589
@ Fatal
Definition LogVerbosity.h:22
@ VerbosityMask
Definition LogVerbosity.h:58

◆ UE_PRIVATE_LOGFMT_AGGREGATE

#define UE_PRIVATE_LOGFMT_AGGREGATE (   ...)    {__VA_ARGS__}

◆ UE_PRIVATE_LOGFMT_CALL

#define UE_PRIVATE_LOGFMT_CALL (   F,
  A 
)    UE_PRIVATE_LOGFMT_EXPAND(F A)

◆ UE_PRIVATE_LOGFMT_COUNT

#define UE_PRIVATE_LOGFMT_COUNT (   ...)    UE_PRIVATE_LOGFMT_CALL(UE_PRIVATE_LOGFMT_COUNT_IMPL, (_, ##__VA_ARGS__, 16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))

◆ UE_PRIVATE_LOGFMT_COUNT_IMPL

#define UE_PRIVATE_LOGFMT_COUNT_IMPL (   _,
  A,
  B,
  C,
  D,
  E,
  F,
  G,
  H,
  I,
  J,
  K,
  L,
  M,
  N,
  O,
  P,
  Count,
  ... 
)    Count

◆ UE_PRIVATE_LOGFMT_EXPAND

#define UE_PRIVATE_LOGFMT_EXPAND (   X)    X

◆ UE_PRIVATE_LOGFMT_FIELD

#define UE_PRIVATE_LOGFMT_FIELD (   Field)    UE_PRIVATE_LOGFMT_FIELD_EXPAND(UE_PRIVATE_LOGFMT_NAMED_FIELD Field)

◆ UE_PRIVATE_LOGFMT_FIELD_EXPAND

#define UE_PRIVATE_LOGFMT_FIELD_EXPAND (   ...)    UE_PRIVATE_LOGFMT_FIELD_EXPAND_INNER(__VA_ARGS__)

◆ UE_PRIVATE_LOGFMT_FIELD_EXPAND_INNER

#define UE_PRIVATE_LOGFMT_FIELD_EXPAND_INNER (   ...)    UE_PRIVATE_LOGFMT_STRIP_ ## __VA_ARGS__

◆ UE_PRIVATE_LOGFMT_FIELDS

◆ UE_PRIVATE_LOGFMT_FIELDS_0

#define UE_PRIVATE_LOGFMT_FIELDS_0 ( )

◆ UE_PRIVATE_LOGFMT_FIELDS_1

#define UE_PRIVATE_LOGFMT_FIELDS_1 (   A)    , UE_PRIVATE_LOGFMT_FIELD(A)

◆ UE_PRIVATE_LOGFMT_FIELDS_10

◆ UE_PRIVATE_LOGFMT_FIELDS_11

◆ UE_PRIVATE_LOGFMT_FIELDS_12

◆ UE_PRIVATE_LOGFMT_FIELDS_13

◆ UE_PRIVATE_LOGFMT_FIELDS_14

◆ UE_PRIVATE_LOGFMT_FIELDS_15

◆ UE_PRIVATE_LOGFMT_FIELDS_16

◆ UE_PRIVATE_LOGFMT_FIELDS_2

#define UE_PRIVATE_LOGFMT_FIELDS_2 (   A,
  B 
)    , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B)

◆ UE_PRIVATE_LOGFMT_FIELDS_3

#define UE_PRIVATE_LOGFMT_FIELDS_3 (   A,
  B,
  C 
)    , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C)

◆ UE_PRIVATE_LOGFMT_FIELDS_4

#define UE_PRIVATE_LOGFMT_FIELDS_4 (   A,
  B,
  C,
  D 
)    , UE_PRIVATE_LOGFMT_FIELD(A), UE_PRIVATE_LOGFMT_FIELD(B), UE_PRIVATE_LOGFMT_FIELD(C), UE_PRIVATE_LOGFMT_FIELD(D)

◆ UE_PRIVATE_LOGFMT_FIELDS_5

◆ UE_PRIVATE_LOGFMT_FIELDS_6

◆ UE_PRIVATE_LOGFMT_FIELDS_7

◆ UE_PRIVATE_LOGFMT_FIELDS_8

◆ UE_PRIVATE_LOGFMT_FIELDS_9

◆ UE_PRIVATE_LOGFMT_LOC

#define UE_PRIVATE_LOGFMT_LOC (   Condition,
  CategoryName,
  Verbosity,
  Namespace,
  Key,
  Format,
  ... 
)
Value:
do \
{ \
if constexpr ((::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) == ::ELogVerbosity::Fatal || \
((::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) <= ::ELogVerbosity::COMPILED_IN_MINIMUM_VERBOSITY && \
(::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) <= UE_PRIVATE_LOG_CATEGORY(CategoryName).CompileTimeVerbosity)) \
{ \
static ::UE::Logging::Private::FStaticLogDynamicData LOG_Dynamic; \
static constexpr ::UE::Logging::Private::FStaticLocalizedLogRecord LOG_Static UE_PRIVATE_LOGFMT_AGGREGATE(TEXT(Namespace), TEXT(Key), TEXT(Format), __builtin_FILE(), __builtin_LINE(), ::ELogVerbosity::Verbosity, LOG_Dynamic); \
UE_PRIVATE_LOGFMT_LOG_IF_ACTIVE(Condition, CategoryName, Verbosity, LOG_Static, ##__VA_ARGS__); \
} \
} \
while (false)

◆ UE_PRIVATE_LOGFMT_LOG_IF_ACTIVE

#define UE_PRIVATE_LOGFMT_LOG_IF_ACTIVE (   Condition,
  CategoryName,
  Verbosity,
  Log,
  ... 
)
Value:
if constexpr ((::ELogVerbosity::Verbosity & ::ELogVerbosity::VerbosityMask) == ::ELogVerbosity::Fatal) \
{ \
Condition \
{ \
::UE::Logging::Private::FatalLogWithFields(UE_PRIVATE_LOG_CATEGORY(CategoryName), LOG_Static, ##__VA_ARGS__); \
} \
} \
else if (!UE_PRIVATE_LOG_CATEGORY(CategoryName).IsSuppressed(::ELogVerbosity::Verbosity)) \
{ \
Condition \
{ \
::UE::Logging::Private::LogWithFields(UE_PRIVATE_LOG_CATEGORY(CategoryName), LOG_Static, ##__VA_ARGS__); \
} \
}

◆ UE_PRIVATE_LOGFMT_NAMED_FIELD

#define UE_PRIVATE_LOGFMT_NAMED_FIELD (   Name,
  ... 
)    UE_PRIVATE_LOGFMT_NAMED_FIELD ::UE::Logging::Private::CheckFieldName(Name), __VA_ARGS__

◆ UE_PRIVATE_LOGFMT_STRIP_UE_PRIVATE_LOGFMT_NAMED_FIELD

#define UE_PRIVATE_LOGFMT_STRIP_UE_PRIVATE_LOGFMT_NAMED_FIELD

Function Documentation

◆ SerializeForLog()

template<typename ValueType UE_REQUIRES>
void SerializeForLog ( FCbWriter Writer,
const TOptional< ValueType > &  Optional 
)
inline