2.3 KiB
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.,
--cdflag is provided) - No log file is configured (i.e.,
log_pathis 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_pathis 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_pathto 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