use super::{time::Time, LogLevel};
#[derive(Clone, Debug)]
pub(crate) struct LogMessage {
level: LogLevel,
message: String,
pub(crate) time: Time,
position: String,
}
impl LogMessage {
pub fn new(level: LogLevel, message: String, time_zone: i32, position: String) -> Self {
Self {
level,
message,
position,
time: Time::now(time_zone),
}
}
pub fn print(&self) -> String {
format!(
"{} {} [{}] {}",
self.time, self.level, self.position, self.message
)
}
pub fn get_level(&self) -> usize {
self.level as usize
}
pub fn split_enter(&self) -> Vec<Self> {
let mut messages = Vec::new();
for line in self.message.lines() {
messages.push(Self {
position: self.position.clone(),
level: self.level.clone(),
message: line.to_string(),
time: self.time.clone(),
});
}
messages
}
}
unsafe impl Send for LogMessage {}