@@ -18,7 +18,8 @@ use super::types::{
1818 parse_bool_value_from, ConfigPathSource , ConfigRequest , DatabaseRetryConfig , LoadedConfigPath ,
1919 LogFormat , LogLevel , ReportFormat , ResolvedAuthRuntimeConfig , ResolvedHookRuntimeConfig ,
2020 ResolvedObservabilityRuntimeConfig , ResolvedOptionalValue , ResolvedValue , ValueSource ,
21- ENV_ATTRIBUTION_HOOKS_DISABLED , ENV_LOG_DIR , ENV_LOG_FORMAT , ENV_LOG_LEVEL ,
21+ DEFAULT_LOG_FILE_RETENTION_LIMIT , ENV_ATTRIBUTION_HOOKS_DISABLED , ENV_LOG_DIR , ENV_LOG_FORMAT ,
22+ ENV_LOG_LEVEL ,
2223} ;
2324
2425const DEFAULT_TIMEOUT_MS : u64 = 30000 ;
@@ -60,6 +61,7 @@ pub(super) struct RuntimeConfig {
6061 pub ( super ) log_level : ResolvedValue < LogLevel > ,
6162 pub ( super ) log_format : ResolvedValue < LogFormat > ,
6263 pub ( super ) log_dir : ResolvedOptionalValue < String > ,
64+ pub ( super ) log_file_retention_limit : ResolvedValue < usize > ,
6365 pub ( super ) timeout_ms : ResolvedValue < u64 > ,
6466 pub ( super ) attribution_hooks_enabled : ResolvedValue < bool > ,
6567 pub ( super ) workos_client_id : ResolvedOptionalValue < String > ,
@@ -192,6 +194,7 @@ where
192194 log_level : runtime. log_level . value ,
193195 log_format : runtime. log_format . value ,
194196 log_dir : runtime. log_dir . value ,
197+ log_file_retention_limit : runtime. log_file_retention_limit . value ,
195198 loaded_config_paths : runtime. loaded_config_paths ,
196199 validation_errors : runtime. validation_errors ,
197200 } )
@@ -268,6 +271,7 @@ where
268271 log_level : None ,
269272 log_format : None ,
270273 log_dir : None ,
274+ log_file_retention_limit : None ,
271275 timeout_ms : None ,
272276 attribution_hooks_enabled : None ,
273277 workos_client_id : None ,
@@ -296,6 +300,9 @@ where
296300 if let Some ( log_dir) = layer. log_dir {
297301 file_config. log_dir = Some ( log_dir) ;
298302 }
303+ if let Some ( log_file_retention_limit) = layer. log_file_retention_limit {
304+ file_config. log_file_retention_limit = Some ( log_file_retention_limit) ;
305+ }
299306 if let Some ( timeout_ms) = layer. timeout_ms {
300307 file_config. timeout_ms = Some ( timeout_ms) ;
301308 }
@@ -373,6 +380,17 @@ where
373380 default_observability_log_dir ( ) ?
374381 } ;
375382
383+ let resolved_log_file_retention_limit = match file_config. log_file_retention_limit {
384+ Some ( value) => ResolvedValue {
385+ value : value. value ,
386+ source : ValueSource :: ConfigFile ( value. source ) ,
387+ } ,
388+ None => ResolvedValue {
389+ value : DEFAULT_LOG_FILE_RETENTION_LIMIT ,
390+ source : ValueSource :: Default ,
391+ } ,
392+ } ;
393+
376394 let mut resolved_timeout_ms = ResolvedValue {
377395 value : DEFAULT_TIMEOUT_MS ,
378396 source : ValueSource :: Default ,
@@ -439,6 +457,7 @@ where
439457 log_level : resolved_log_level,
440458 log_format : resolved_log_format,
441459 log_dir : resolved_log_dir,
460+ log_file_retention_limit : resolved_log_file_retention_limit,
442461 timeout_ms : resolved_timeout_ms,
443462 attribution_hooks_enabled : resolved_attribution_hooks_enabled,
444463 workos_client_id : resolved_workos_client_id,
0 commit comments