1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use crate::logger::types::{
log_color::LogColor, log_info::LogInfo, log_severity::LogSeverity, logger::Logger,
};
/// Implementing [`Logger`].
impl Logger {
/// [`Logger::debug`] will log a debug message to the console using the [`LogSeverity::Debug`]
/// severity level, and also provide some additional helpful information using `file` and `line_number`.
///
/// # Example
/// [`Logger::debug`] can be used to print out a [`LogSeverity::Debug`] message to the console:
/// ```rust
/// use rquant::logger::types::logger::Logger;
///
/// fn log_debug_message(message: &str) {
/// Logger::debug(message, file!(), line!())
/// }
/// ```
pub fn debug(message: &str, file: &str, line_number: u32) {
Self::print_severity(LogInfo::new(LogSeverity::Debug, LogColor::Green));
Self::print_file_info(file, line_number);
Self::log(message);
}
/// [`Logger::info`] will log an informational message to the console using the [`LogSeverity::Info`]
/// severity level, and also provide some additional helpful information using `file` and `line_number`.
///
/// # Example
/// [`Logger::info`] can be used to print out a [`LogSeverity::Info`] message to the console:
/// ```rust
/// use rquant::logger::types::logger::Logger;
///
/// fn log_info_message(message: &str) {
/// Logger::info(message, file!(), line!())
/// }
/// ```
pub fn info(message: &str, file: &str, line_number: u32) {
Self::print_severity(LogInfo::new(LogSeverity::Info, LogColor::Cyan));
Self::print_file_info(file, line_number);
Self::log(message);
}
/// [`Logger::warn`] will log a warning message to the console using the [`LogSeverity::Warning`]
/// severity level, and also provide some additional helpful information using `file` and `line_number`.
///
/// # Example
/// [`Logger::warn`] can be used to print out a [`LogSeverity::Warning`] message to the console:
/// ```rust
/// use rquant::logger::types::logger::Logger;
///
/// fn log_warn_message(message: &str) {
/// Logger::warn(message, file!(), line!())
/// }
/// ```
pub fn warn(message: &str, file: &str, line_number: u32) {
Self::print_severity(LogInfo::new(LogSeverity::Warning, LogColor::Yellow));
Self::print_file_info(file, line_number);
Self::log(message);
}
/// [`Logger::error`] will log an error message to the console using the [`LogSeverity::Error`]
/// severity level, and also provide some additional helpful information using `file` and `line_number`.
///
/// # Example
/// [`Logger::error`] can be used to print out a [`LogSeverity::Error`] message to the console:
/// ```rust
/// use rquant::logger::types::logger::Logger;
///
/// fn log_error_message(message: &str) {
/// Logger::error(message, file!(), line!())
/// }
/// ```
pub fn error(message: &str, file: &str, line_number: u32) {
Self::print_severity(LogInfo::new(LogSeverity::Error, LogColor::Red));
Self::print_file_info(file, line_number);
Self::log(message);
}
/// [`Logger::print_severity`] will print out the severity context from the provided [`LogInfo`].
fn print_severity(log_info: LogInfo) {
let severity_name = log_info.severity.get_name();
let severity_color = log_info.color.get_escape_code();
print!("\n{severity_color}[{severity_name}]");
}
/// [`Logger::print_severity`] will print the `file` and `line_number`.
fn print_file_info(file: &str, line_number: u32) {
println!(" {}{file}:{line_number}{}", LogColor::GREY, LogColor::RESET);
}
/// [`Logger::log`] is the internal [`Logger`] function that prints out any message, regardless of
/// [`LogSeverity`].
fn log(message: &str) {
if !message.is_empty() {
println!("{message}");
}
}
}