use chrono::Local;
use gdnative_core::{godot_print, godot_warn};
use log::{Level, Record};
use log4rs::append::Append;
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub(crate) struct GodotAppender;
impl Append for GodotAppender {
fn append(&self, record: &Record) -> anyhow::Result<()> {
let timestamp = Local::now().format("%Y-%m-%d %H:%M:%S").to_string();
let level = record.level();
let message = record.args();
let output = match record.module_path() {
Some(module) => format!("{} {} {} {}", timestamp, level, module, message),
None => format!("{} {} {}", timestamp, level, message),
};
if record.level() <= Level::Warn {
godot_warn!("{}", output);
} else {
godot_print!("{}", output);
}
Ok(())
}
fn flush(&self) {}
}