Context
The underlying C++ RTMS SDK writes its internal log files to ./logs/<exe>_<pid>_<YYYYMMDD>_<seq>.log — relative to the process's current working directory. If the directory doesn't exist relative to CWD, every SDK log call produces this on stderr:
failed to open file [./logs/<exe>_<pid>_<date>_<seq>.log] errno = 2
In containerized deployments (Docker, Fargate, ECS, K8s), CWD is typically /app/ (set by WORKDIR /app), so the SDK looks for /app/logs/ which doesn't exist by default. Result: the log stream is flooded with hundreds of errno=2 lines per second, drowning the actual application logs. The SDK keeps working (silently fails the file open) but the noise makes debugging unreadable.
Discovered during AWS Terraform deploy on 2026-05-20.
What to ship
Pick one or combine:
- Auto-create the directory at SDK init. Fall back silently to stdout-only if create fails. Removes the surprise entirely with zero config change for callers.
- Make file logging opt-in — add
ZM_RTMS_LOG_FILE=/path env var; when unset, log to stdout/stderr only. Most cloud deploys never want disk logs anyway.
- Make the directory configurable via
ZM_RTMS_LOG_DIR (default ./logs/). Lets callers point at /tmp/rtms or /var/log/rtms.
Recommendation: ship #1 (auto-create) + #2 (opt-in file logging) so cloud deployments work out of the box AND customers can keep file logs if they want.
Acceptance criteria
Cross-language parity
Source
Tracked in vault: Projects/RTMS SDK v1.2.md → DEVS-X10.
Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.
Context
The underlying C++ RTMS SDK writes its internal log files to
./logs/<exe>_<pid>_<YYYYMMDD>_<seq>.log— relative to the process's current working directory. If the directory doesn't exist relative to CWD, every SDK log call produces this on stderr:In containerized deployments (Docker, Fargate, ECS, K8s), CWD is typically
/app/(set byWORKDIR /app), so the SDK looks for/app/logs/which doesn't exist by default. Result: the log stream is flooded with hundreds of errno=2 lines per second, drowning the actual application logs. The SDK keeps working (silently fails the file open) but the noise makes debugging unreadable.Discovered during AWS Terraform deploy on 2026-05-20.
What to ship
Pick one or combine:
ZM_RTMS_LOG_FILE=/pathenv var; when unset, log to stdout/stderr only. Most cloud deploys never want disk logs anyway.ZM_RTMS_LOG_DIR(default./logs/). Lets callers point at/tmp/rtmsor/var/log/rtms.Recommendation: ship #1 (auto-create) + #2 (opt-in file logging) so cloud deployments work out of the box AND customers can keep file logs if they want.
Acceptance criteria
failed to open file ... errno = 2when CWD has no./logs/directoryZM_RTMS_LOG_DIRenv var to override the default pathZM_RTMS_LOG_FILE_ENABLED=falseto disable file logging entirelyCross-language parity
./logs/node_<pid>_<date>_<seq>.log)Source
Tracked in vault:
Projects/RTMS SDK v1.2.md→ DEVS-X10.Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.