prettylog_rs/types/
log_type.rs1use 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(), }
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(), }
81 }
82}