logid_core/logging/filter/
filter_builders.rs1use crate::log_id::LogLevel;
2
3use super::{AddonFilter, FilterConfig, LogIdAddonFilter, LogIdModuleFilter};
4
5#[derive(Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
6pub struct FilterConfigBuilder {
7 general_logging_enabled: bool,
8 general_level: LogLevel,
9 general_addons: Vec<AddonFilter>,
10 allowed_global_ids: Vec<LogIdAddonFilter>,
12 allowed_modules: Vec<LogIdModuleFilter>,
13}
14
15impl FilterConfigBuilder {
16 pub fn new(level: LogLevel) -> Self {
18 Self {
19 general_logging_enabled: true,
20 general_level: level,
21 ..Default::default()
22 }
23 }
24
25 pub fn disabled_general_logging(mut self) -> Self {
27 self.general_logging_enabled = false;
28 self
29 }
30
31 pub fn allowed_addons<I>(mut self, addons: I) -> Self
33 where
34 I: IntoIterator,
35 I::Item: Into<AddonFilter>,
36 {
37 self.general_addons
38 .extend(addons.into_iter().map(Into::into));
39 self
40 }
41
42 pub fn global_ids<I>(mut self, global_ids: I) -> Self
44 where
45 I: IntoIterator,
46 I::Item: Into<LogIdAddonFilter>,
47 {
48 self.allowed_global_ids
49 .extend(global_ids.into_iter().map(Into::into));
50 self
51 }
52
53 pub fn modules<I>(mut self, modules: I) -> Self
55 where
56 I: IntoIterator,
57 I::Item: Into<LogIdModuleFilter>,
58 {
59 self.allowed_modules
60 .extend(modules.into_iter().map(Into::into));
61 self
62 }
63
64 pub fn build(self) -> FilterConfig {
66 FilterConfig {
67 general_logging_enabled: self.general_logging_enabled,
68 general_level: self.general_level,
69 general_addons: self.general_addons,
70 allowed_global_ids: self.allowed_global_ids,
71 allowed_modules: self.allowed_modules,
72 }
73 }
74}