@@ -18,8 +18,8 @@ use super::types::{
1818 parse_bool_value_from, ConfigPathSource , ConfigRequest , DatabaseRetryConfig , LoadedConfigPath ,
1919 LogFormat , LogLevel , ReportFormat , ResolvedAgentTraceStorageRuntimeConfig ,
2020 ResolvedAuthRuntimeConfig , ResolvedHookRuntimeConfig , ResolvedObservabilityRuntimeConfig ,
21- ResolvedOptionalValue , ResolvedValue , ValueSource , ENV_ATTRIBUTION_HOOKS_DISABLED , ENV_LOG_DIR ,
22- ENV_LOG_FORMAT , ENV_LOG_LEVEL ,
21+ ResolvedOptionalValue , ResolvedValue , ValueSource , DEFAULT_LOG_FILE_RETENTION_LIMIT ,
22+ ENV_ATTRIBUTION_HOOKS_DISABLED , ENV_LOG_DIR , ENV_LOG_FORMAT , ENV_LOG_LEVEL ,
2323} ;
2424
2525const DEFAULT_TIMEOUT_MS : u64 = 30000 ;
@@ -62,6 +62,7 @@ pub(super) struct RuntimeConfig {
6262 pub ( super ) log_level : ResolvedValue < LogLevel > ,
6363 pub ( super ) log_format : ResolvedValue < LogFormat > ,
6464 pub ( super ) log_dir : ResolvedOptionalValue < String > ,
65+ pub ( super ) log_file_retention_limit : ResolvedValue < usize > ,
6566 pub ( super ) timeout_ms : ResolvedValue < u64 > ,
6667 pub ( super ) attribution_hooks_enabled : ResolvedValue < bool > ,
6768 pub ( super ) workos_client_id : ResolvedOptionalValue < String > ,
@@ -222,6 +223,7 @@ where
222223 log_level : runtime. log_level . value ,
223224 log_format : runtime. log_format . value ,
224225 log_dir : runtime. log_dir . value ,
226+ log_file_retention_limit : runtime. log_file_retention_limit . value ,
225227 loaded_config_paths : runtime. loaded_config_paths ,
226228 validation_errors : runtime. validation_errors ,
227229 } )
@@ -298,6 +300,7 @@ where
298300 log_level : None ,
299301 log_format : None ,
300302 log_dir : None ,
303+ log_file_retention_limit : None ,
301304 timeout_ms : None ,
302305 attribution_hooks_enabled : None ,
303306 workos_client_id : None ,
@@ -328,6 +331,9 @@ where
328331 if let Some ( log_dir) = layer. log_dir {
329332 file_config. log_dir = Some ( log_dir) ;
330333 }
334+ if let Some ( log_file_retention_limit) = layer. log_file_retention_limit {
335+ file_config. log_file_retention_limit = Some ( log_file_retention_limit) ;
336+ }
331337 if let Some ( timeout_ms) = layer. timeout_ms {
332338 file_config. timeout_ms = Some ( timeout_ms) ;
333339 }
@@ -411,6 +417,17 @@ where
411417 default_observability_log_dir ( ) ?
412418 } ;
413419
420+ let resolved_log_file_retention_limit = match file_config. log_file_retention_limit {
421+ Some ( value) => ResolvedValue {
422+ value : value. value ,
423+ source : ValueSource :: ConfigFile ( value. source ) ,
424+ } ,
425+ None => ResolvedValue {
426+ value : DEFAULT_LOG_FILE_RETENTION_LIMIT ,
427+ source : ValueSource :: Default ,
428+ } ,
429+ } ;
430+
414431 let mut resolved_timeout_ms = ResolvedValue {
415432 value : DEFAULT_TIMEOUT_MS ,
416433 source : ValueSource :: Default ,
@@ -499,6 +516,7 @@ where
499516 log_level : resolved_log_level,
500517 log_format : resolved_log_format,
501518 log_dir : resolved_log_dir,
519+ log_file_retention_limit : resolved_log_file_retention_limit,
502520 timeout_ms : resolved_timeout_ms,
503521 attribution_hooks_enabled : resolved_attribution_hooks_enabled,
504522 workos_client_id : resolved_workos_client_id,
0 commit comments