Configure console logs, OTLP logs, and traces independently

This commit is contained in:
lda committed 2026-10-10 15:56:20 +07:00 Verified
1 parent a2f39bd3c2
commit f34c1fe2d3
10 files changed
+263 -18

No files matched your search

+18
View File
@@ -113,6 +113,15 @@ pub fn write_init_config(args: &InitConfigArgs) -> Result<Option<PathBuf>> {
ui_dist_dir,
bootstrap_enroll_tokens,
telemetry: WritableTelemetry {
console_filter: base_telemetry
.console_filter
.or_else(|| defaults.telemetry.console_filter.clone()),
otlp_log_filter: base_telemetry
.otlp_log_filter
.or_else(|| defaults.telemetry.otlp_log_filter.clone()),
trace_filter: base_telemetry
.trace_filter
.or_else(|| defaults.telemetry.trace_filter.clone()),
authorization_env: base_telemetry
.authorization_env
.or_else(|| defaults.telemetry.authorization_env.clone()),
@@ -227,6 +236,9 @@ bootstrap_enroll_tokens = ["old-token"]
[telemetry]
otlp_endpoint = "http://otel.example"
authorization_env = "WAKEY_OTLP_AUTHORIZATION"
console_filter = "info"
otlp_log_filter = "debug"
trace_filter = "info"
service_name = "old-service"
json_logs = true
"#,
@@ -265,6 +277,12 @@ json_logs = true
Some("/tmp/wakey-base/old.sqlite3")
);
assert_eq!(parsed["telemetry"]["json_logs"].as_bool(), Some(true));
assert_eq!(parsed["telemetry"]["console_filter"].as_str(), Some("info"));
assert_eq!(
parsed["telemetry"]["otlp_log_filter"].as_str(),
Some("debug")
);
assert_eq!(parsed["telemetry"]["trace_filter"].as_str(), Some("info"));
assert_eq!(
parsed["telemetry"]["authorization_env"].as_str(),
Some("WAKEY_OTLP_AUTHORIZATION")
@@ -232,6 +232,9 @@ fn resolve_telemetry(file: Option<FileTelemetryConfig>) -> TelemetryConfig {
let mut out = TelemetryConfig::default();
if let Some(file) = file {
out.authorization_env = file.authorization_env;
out.console_filter = file.console_filter;
out.otlp_log_filter = file.otlp_log_filter;
out.trace_filter = file.trace_filter;
if let Some(endpoint) = file.otlp_endpoint {
let trimmed = endpoint.trim().to_string();
if !trimmed.is_empty() {
+18
View File
@@ -22,6 +22,9 @@ pub struct DaemonConfig {
#[derive(Debug, Clone)]
pub struct TelemetryConfig {
pub console_filter: Option<String>,
pub otlp_log_filter: Option<String>,
pub trace_filter: Option<String>,
pub otlp_endpoint: Option<String>,
pub authorization_env: Option<String>,
pub service_name: String,
@@ -32,6 +35,9 @@ impl Default for TelemetryConfig {
fn default() -> Self {
let defaults = &DEFAULT_CONFIG.telemetry;
Self {
console_filter: defaults.console_filter.clone(),
otlp_log_filter: defaults.otlp_log_filter.clone(),
trace_filter: defaults.trace_filter.clone(),
otlp_endpoint: defaults.otlp_endpoint.clone(),
authorization_env: defaults.authorization_env.clone(),
service_name: defaults.service_name.clone(),
@@ -58,6 +64,9 @@ pub(crate) struct FileConfig {
#[derive(Debug, Deserialize, Default)]
pub(crate) struct FileTelemetryConfig {
pub(crate) console_filter: Option<String>,
pub(crate) otlp_log_filter: Option<String>,
pub(crate) trace_filter: Option<String>,
pub(crate) otlp_endpoint: Option<String>,
pub(crate) authorization_env: Option<String>,
pub(crate) service_name: Option<String>,
@@ -82,6 +91,12 @@ pub(crate) struct WritableConfig {
#[derive(Debug, Clone, Serialize)]
pub(crate) struct WritableTelemetry {
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) console_filter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) otlp_log_filter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) trace_filter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) otlp_endpoint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
@@ -102,6 +117,9 @@ pub(crate) static DEFAULT_CONFIG: LazyLock<WritableConfig> = LazyLock::new(|| Wr
ui_dist_dir: "ui/dist".into(),
bootstrap_enroll_tokens: Vec::new(),
telemetry: WritableTelemetry {
console_filter: None,
otlp_log_filter: None,
trace_filter: None,
otlp_endpoint: None,
authorization_env: None,
service_name: "wakey-control-plane".to_string(),