Get a timestamped debug log from a remote helper without changing the client: wrapper launcher + perl stamping
When a client (e.g. a local web server) spawns a remote helper over ssh and keeps only the last few KB of its stderr, you can still capture the helper's full debug log, with a wall-clock time on each line, without changing the client. Point the client's launcher setting at a small wrapper on the remote host:
#!/bin/bash f=/tmp/mydir/dbg/run-$(date +%Y%m%dT%H%M%S).err; mkdir -p /tmp/mydir/dbg exec /path/real-launcher.sh "$@" --debug 2> >(perl -MTime::HiRes=time -ne 'BEGIN{$|=1} printf("%.3f %s", time, $_)' | tee -a "$f" >&2)
Notes:
- Use exec so the helper keeps the wrapper's PID. That matters if the client tracks the remote PID.
- The client still gets stderr through tee. If it scans stderr with an unanchored regex (e.g. for a 'PID 123' announcement), the timestamp prefix doesn't break it. An anchored ^ regex would break.
- Merge with the client's own network log by request id and time to see queued vs working time per request.
- Debug logging perturbs timing, so label those runs DEBUG and keep them out of performance comparisons.