I stumbled upon UE_CLOG(Condition, CategoryName, Verbosity, Format, ...)
which might fit the bill. It’s conditional logging though, so you are still going to need a check of some sort.
What I do for loops when debugging is this:
GEngine->AddOnScreenDebugMessage(1, 1.0f, FColor::Green, FString::Printf(TEXT("Triggered")));
I’m not sure if you already knew, but the first parameter, if a positive number, sets the row for this message to appear in, so it will overwrite the message of the previous frame and not fill up the screen with log messages.