Skip to main content

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}