rex_logger/tracing_logger/config.rs
1use derive_builder::Builder;
2
3/// This constant defines the program name that will appear in syslog entries
4/// when syslog logging is enabled. It helps identify log entries from this
5/// application in system logs.
6pub const SYSLOG_IDENTITY: &str = "rex_runner";
7
8/// Configuration options for logging output destinations.
9///
10/// This struct defines which logging outputs should be enabled. It uses the builder
11/// pattern via `derive_builder` for convenient configuration. Both console and syslog
12/// logging are disabled by default.
13///
14/// # Platform Support
15///
16/// - **Console logging**: Available on all platforms
17/// - **Syslog logging**: Unix-based systems only (Linux, macOS, etc.)
18/// - **Memory logging**: Available on all platforms
19/// - **Max Log Message Length**: Maximun length for individual log messages stored in-memory. Defaults to 2Kb if not set.
20///
21/// # Examples
22///
23/// ```rust
24/// use rex_logger::tracing_logger::config::LoggingOptionBuilder;
25///
26/// let config = LoggingOptionBuilder::default()
27/// .console(true)
28/// .syslog(false)
29/// .build()
30/// .unwrap();
31/// ```
32#[derive(Builder, Debug, Copy, Clone)]
33pub struct LoggingOption {
34 #[builder(default = false)]
35 pub console: bool,
36
37 #[builder(default = false)]
38 pub syslog: bool,
39
40 #[builder(default = false)]
41 pub script_log: bool,
42
43 #[builder(default)]
44 pub max_script_log_message_length: Option<usize>,
45}