ultralytics_inference/
logging.rs1use std::sync::atomic::{AtomicBool, Ordering};
6
7static VERBOSE: AtomicBool = AtomicBool::new(true);
9
10pub fn set_verbose(verbose: bool) {
12 VERBOSE.store(verbose, Ordering::Relaxed);
13}
14
15pub fn is_verbose() -> bool {
17 VERBOSE.load(Ordering::Relaxed)
18}
19
20#[macro_export]
22macro_rules! info {
23 ($($arg:tt)*) => {
24 println!("{}", format!($($arg)*));
25 }
26}
27
28#[macro_export]
30macro_rules! warn {
31 ($($arg:tt)*) => {
32 use colored::Colorize;
33 eprintln!("{} {}", "WARNING ⚠️ ".yellow().bold(), format!($($arg)*));
34 }
35}
36
37#[macro_export]
39macro_rules! error {
40 ($($arg:tt)*) => {
41 use colored::Colorize;
42 eprintln!("{} {}", "ERROR 💥".red().bold(), format!($($arg)*));
43 }
44}
45
46#[macro_export]
48macro_rules! success {
49 ($($arg:tt)*) => {
50 use colored::Colorize;
51 println!("{} {}", "SUCCESS ✅".green().bold(), format!($($arg)*));
52 }
53}
54
55#[macro_export]
57macro_rules! verbose {
58 ($($arg:tt)*) => {
59 if $crate::logging::is_verbose() {
60 println!("{}", format!($($arg)*));
61 }
62 }
63}
64
65#[macro_export]
67macro_rules! section {
68 ($($arg:tt)*) => {
69 use colored::Colorize;
70 if $crate::logging::is_verbose() {
71 println!();
72 println!("{}", format!($($arg)*).cyan().bold());
73 }
74 }
75}
76
77#[cfg(test)]
78mod tests {
79 use super::*;
80
81 #[test]
82 fn test_verbosity_toggle() {
83 set_verbose(true);
84 assert!(is_verbose());
85
86 set_verbose(false);
87 assert!(!is_verbose());
88
89 set_verbose(true);
90 assert!(is_verbose());
91 }
92}