altv_internal_logger 16.2.3-test.15

An internal logger for alt:V module. Not intended for direct use.
Documentation
use std::str::FromStr;

use colored::*;
use log::{Level, LevelFilter, Log};

pub use log::debug;
pub use log::error;
pub use log::info;
pub use log::warn;

struct Logger {}

impl Log for Logger {
  fn enabled(&self, _: &log::Metadata) -> bool {
    true
  }
  fn log(&self, record: &log::Record) {
    let module_path = format!("[rust: {}]", record.module_path().unwrap()).bright_magenta();

    let content = record.args().to_string();
    let content = match record.level() {
      Level::Warn => content.bright_yellow(),
      Level::Error => content.bright_red(),
      _ => content.normal(),
    };

    println!("{module_path} {content}");
  }
  fn flush(&self) {}
}

pub fn init() -> Result<(), log::SetLoggerError> {
  let level = option_env!("LOG_LEVEL").unwrap_or("info");

  #[cfg(windows)]
  control::set_virtual_terminal(true).unwrap();

  log::set_max_level(LevelFilter::from_str(level).unwrap());
  log::set_logger(&Logger {})
}