tfmcp/shared/
logging.rs

1use chrono::Local;
2use std::fmt::Display;
3
4#[derive(Debug, Clone, Copy)]
5pub enum LogLevel {
6    Debug,
7    Info,
8    Warning,
9    Error,
10}
11
12impl Display for LogLevel {
13    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14        match self {
15            LogLevel::Debug => write!(f, "debug"),
16            LogLevel::Info => write!(f, "info"),
17            LogLevel::Warning => write!(f, "warning"),
18            LogLevel::Error => write!(f, "error"),
19        }
20    }
21}
22
23/// Log a message to stderr with timestamp and log level
24pub fn log(level: LogLevel, message: &str) {
25    let timestamp = Local::now().format("%Y-%m-%d %H:%M:%S%.3f");
26    eprintln!("[{}] [{}] {}", timestamp, level, message);
27}
28
29/// Log debug level message
30pub fn debug(message: &str) {
31    log(LogLevel::Debug, message);
32}
33
34/// Log info level message
35pub fn info(message: &str) {
36    log(LogLevel::Info, message);
37}
38
39/// Log warning level message
40pub fn warn(message: &str) {
41    log(LogLevel::Warning, message);
42}
43
44/// Log error level message
45pub fn error(message: &str) {
46    log(LogLevel::Error, message);
47}