use tracing::info;
use crate::statistics::statistics_item::StatisticsItem;
use crate::statistics::statistics_item_formatter::StatisticsItemFormatter;
pub struct StatisticsItemPrinter<'a> {
formatter: &'a StatisticsItemFormatter,
}
impl<'a> StatisticsItemPrinter<'a> {
pub fn new(formatter: &'a StatisticsItemFormatter) -> Self {
Self { formatter }
}
pub fn set_formatter(&mut self, formatter: &'a StatisticsItemFormatter) {
self.formatter = formatter;
}
pub fn print(&self, prefix: &str, stat_item: &StatisticsItem, suffixes: &[&str]) {
let suffix = suffixes.join("");
let log_message = format!("{}{}{}", prefix, self.formatter.format(stat_item), suffix);
info!("{}", log_message);
}
}