canic_core/config/schema/
log.rs

1use super::{ConfigSchemaError, Validate};
2use serde::{Deserialize, Serialize};
3
4///
5/// Defaults
6///
7
8mod defaults {
9    pub const fn max_entries() -> u64 {
10        10_000
11    }
12
13    pub const fn max_entry_bytes() -> u32 {
14        16_384
15    }
16}
17
18pub const MAX_LOG_ENTRIES: u64 = 100_000;
19
20///
21/// LogConfig
22///
23
24#[derive(Clone, Debug, Deserialize, Serialize)]
25#[serde(deny_unknown_fields)]
26pub struct LogConfig {
27    #[serde(default = "defaults::max_entries")]
28    pub max_entries: u64,
29
30    #[serde(default = "defaults::max_entry_bytes")]
31    pub max_entry_bytes: u32,
32
33    #[serde(default)]
34    pub max_age_secs: Option<u64>,
35}
36
37impl Default for LogConfig {
38    fn default() -> Self {
39        Self {
40            max_entries: defaults::max_entries(),
41            max_entry_bytes: defaults::max_entry_bytes(),
42            max_age_secs: None,
43        }
44    }
45}
46
47impl Validate for LogConfig {
48    fn validate(&self) -> Result<(), ConfigSchemaError> {
49        if self.max_entries > MAX_LOG_ENTRIES {
50            return Err(ConfigSchemaError::ValidationError(format!(
51                "log.max_entries {} exceeds max {}",
52                self.max_entries, MAX_LOG_ENTRIES
53            )));
54        }
55
56        Ok(())
57    }
58}