prettylog_rs/types/
log_type.rs

1use crate::types::ansi::{AnsiColor, AnsiPair};
2use std::fmt::Debug;
3
4#[derive(Clone, Copy, Debug)]
5pub enum LogType {
6    Information,
7    Runtime,
8    Debug,
9    Network,
10    Success,
11    Warning,
12    Error,
13    Exception,
14    Critical,
15    Audit,
16    Trace,
17    Security,
18    UserAction,
19    Performance,
20    Config,
21    Fatal,
22    Custom(&'static dyn CustomLogType),
23}
24
25pub trait CustomLogType: Sync + Debug {
26    fn name(&self) -> &'static str;
27    fn color_pair(&self) -> AnsiPair;
28}
29
30impl LogType {
31    pub fn name(&self) -> &'static str {
32        match self {
33            LogType::Information => "â„šī¸ Information",
34            LogType::Runtime => "✨ Runtime",
35            LogType::Debug => "🔧 Debug",
36            LogType::Network => "🔌 Network",
37            LogType::Success => "âœ”ī¸ Success",
38            LogType::Warning => "âš ī¸ Warning",
39            LogType::Error => "⛔ Error",
40            LogType::Exception => "đŸ’Ŗ Exception",
41            LogType::Critical => "🚨 Critical",
42            LogType::Audit => "📋 Audit",
43            LogType::Trace => "🔍 Trace",
44            LogType::Security => "🔒 Security",
45            LogType::UserAction => "🧍 User Action",
46            LogType::Performance => "âąī¸ Performance",
47            LogType::Config => "âš™ī¸ Config",
48            LogType::Fatal => "â˜ ī¸ Fatal",
49            LogType::Custom(custom) => custom.name(), // Handle CustomLogType
50        }
51    }
52
53    pub fn color_pair(&self) -> AnsiPair {
54        match self {
55            LogType::Information => AnsiPair::new(AnsiColor::CyanBackground, AnsiColor::Cyan),
56            LogType::Runtime => AnsiPair::new(AnsiColor::MagentaBackground, AnsiColor::Magenta),
57            LogType::Debug => AnsiPair::new(AnsiColor::GrayBackground, AnsiColor::Gray),
58            LogType::Network => AnsiPair::new(AnsiColor::BlueBackground, AnsiColor::Blue),
59            LogType::Success => {
60                AnsiPair::new(AnsiColor::BrightGreenBackground, AnsiColor::BrightGreen)
61            }
62            LogType::Warning => {
63                AnsiPair::new(AnsiColor::BrightYellowBackground, AnsiColor::BrightYellow)
64            }
65            LogType::Error => AnsiPair::new(AnsiColor::RedBackground, AnsiColor::Red),
66            LogType::Exception => AnsiPair::new(AnsiColor::RedBackground, AnsiColor::Red),
67            LogType::Critical => {
68                AnsiPair::new(AnsiColor::BrightRedBackground, AnsiColor::BrightRed)
69            }
70            LogType::Audit => AnsiPair::new(AnsiColor::YellowBackground, AnsiColor::Yellow),
71            LogType::Trace => AnsiPair::new(AnsiColor::LightBlueBackground, AnsiColor::LightBlue),
72            LogType::Security => AnsiPair::new(AnsiColor::PurpleBackground, AnsiColor::Purple),
73            LogType::UserAction => {
74                AnsiPair::new(AnsiColor::CutePinkBackground, AnsiColor::CutePink)
75            }
76            LogType::Performance => AnsiPair::new(AnsiColor::PinkBackground, AnsiColor::Pink),
77            LogType::Config => AnsiPair::new(AnsiColor::LightGrayBackground, AnsiColor::LightGray),
78            LogType::Fatal => AnsiPair::new(AnsiColor::DarkRedBackground, AnsiColor::DarkRed),
79            LogType::Custom(custom) => custom.color_pair(), // Handle CustomLogType
80        }
81    }
82}