Visual Logging in Components

I really like the visual logger, I think it’s a great tool! However the moment you try and use it in a component, it all kinds of falls apart. Does anyone have a nice workflow for this?

  • you can use UE_VLOG anywhere, but if you use this as the LogOwner, you only seem able to have one actor log their stuff. Everyone else’s calls get thrown away.
  • if you use GetOwner() as the LogOwner on a UE_VLOG, you get one entry per actor, but all the logs from all the components on that actor get thrown together. you have to use log categories to separate stuff, which is a bit awkward.
  • categories can’t implement IVisualLoggerDebugSnapshotInterface, you have to do it at the actor level and manually call down, which can be awkward if you’re putting components on an engine or blueprint actor! and if you do get it running, you can sort the status categories a little to help, but it’s still awkward.

This screenshot contains all the problems: Telemetry is a component on all vehicles, but because the LogOwner is a component, we get one row with one actor’s output, and that’s it. The vehicles have other components that are using the actor as the LogOwner, and I get one row per actor, but no indication of type there. I can’t filter out component A’s logs from component B’s logs.

How do you use the visual logger with components?

Woah even more confusing - when I possess one of these vehicles, all the component logging switches to the player’s row, no longer the vehicle actor’s. it doesn’t matter if I use GetOwner or GetOuter as the LogOwner. This is especially infuriating!