mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
# Runtime Internal Logging
|
|
|
|
When no logging is configured (i.e., `log_path` is not set), ctrld automatically enables an internal logging system. This system stores logs in memory to provide troubleshooting information when problems occur.
|
|
|
|
## Purpose
|
|
|
|
The runtime internal logging system is designed primarily for **ctrld developers**, not end users. It captures detailed diagnostic information that can be useful for troubleshooting issues when they arise, especially in production environments where explicit logging may not be configured.
|
|
|
|
## When It's Enabled
|
|
|
|
Internal logging is automatically enabled when:
|
|
|
|
- ctrld is running in Control D mode (i.e., `--cd` flag is provided)
|
|
- No log file is configured (i.e., `log_path` is empty or not set)
|
|
|
|
If a log file is explicitly configured via `log_path`, internal logging will **not** be enabled, as the configured log file serves the logging purpose.
|
|
|
|
## How It Works
|
|
|
|
The internal logging system:
|
|
|
|
- Stores logs in **in-memory buffers** (not written to disk)
|
|
- Captures logs at **debug level** for normal operations and **warn level** for warnings
|
|
- Maintains separate buffers for normal logs and warning logs
|
|
- Automatically manages buffer size to prevent unbounded memory growth
|
|
- Preserves initialization logs even when buffers overflow
|
|
|
|
## Configuration
|
|
|
|
**Important**: The `log_level` configuration option does **not** affect the internal logging system. Internal logging always operates at debug level for normal logs and warn level for warnings, regardless of the `log_level` setting in the configuration file.
|
|
|
|
The `log_level` setting only affects:
|
|
- Console output (when running interactively)
|
|
- File-based logging (when `log_path` is configured)
|
|
|
|
## Accessing Internal Logs
|
|
|
|
Internal logs can be accessed through the control server API endpoints. This functionality is intended for developers and support personnel who need to diagnose issues.
|
|
|
|
## Notes
|
|
|
|
- Internal logging is **not** a replacement for proper log file configuration in production environments
|
|
- For production deployments, it is recommended to configure `log_path` to enable persistent file-based logging
|
|
- Internal logs are stored in memory and will be lost if the process terminates unexpectedly
|
|
- The internal logging system is automatically disabled when explicit logging is configured
|
|
|