While We’re in the middle of moving from on-prem Orchestrator to UiPath Cloud, and one thing that caught us completely off guard was how logging behaves after the migration.
When we were on-prem, it was simple —
Orchestrator had physical log files on the server, and Splunk UF(Universal Forwarder) just picked them up from the filesystem.
No fancy workarounds.
After moving to Cloud, that whole path is gone.
No filesystem → no UF → no way to grab logs directly.
Audit/compliance teams immediately started panicking because they rely on full log trails, not just what’s visible in Orchestrator UI.
We looked at the Cloud API approach, but honestly:
- API limits
- throttling
- pagination
- latency
made it pretty unreliable at scale for our unattended workloads.
So we ended up taking a completely different approach.
What we actually did (in simple terms)
Instead of depending on Orchestrator logs, we pushed logging down to the robot level.
- We updated the ‘NLog.config’ on each robot to generate logs locally in a structure that Splunk can read without extra parsing.
(Basically made the layout closer to Splunk JSON format.) - Installed Splunk Universal Forwarder on every unattended robot VM.
- UF now reads the robot-generated logs straight from the machine and ships them to Splunk.
So Splunk gets everything directly from the robot, not from Orchestrator.
This worked surprisingly well because:
- Robots always generate logs
- Cloud doesn’t block anything
- No dependency on UiPath API
- No throttling
- No log delays
- Cloud outages don’t affect log availability
Only thing to watch is local log cleanup — we automated that with a simple rotation script.
Sharing this because I’m sure others will hit the same issue
My question to the community:
Has anyone else tried robot-level logging for Cloud?
Any better way to handle this without touching API limits?
Would also be interested if anyone added extra fields to the robot logs that helped in Splunk searches (like more metadata, business identifiers, etc.).
Not sure if this is the “officially recommended way,” but it’s been stable so far for us.
Happy to share the config snippets if someone is trying something similar.
– Ravindra
@tracydixon @Lahiru.Fernando @Reda_Marzouk @nisargkadam23 @jjes @anob @Roman-Routinuum @hugo.drecourt @AndersJensen @Krollythegoalie @darylaw @Chris_Bolin @Mason_Turvey_Silver @dokumentor