use crate::output::output::OutputLevel;
use super::output::Output;
use serde::Serialize;
#[derive(Serialize)]
struct JsonMessage {
level: String,
message: String,
}
pub struct JsonOutput;
impl Output for JsonOutput {
fn level(&self) -> OutputLevel {
OutputLevel::Json
}
fn error(&self, msg: &str) {
println!(
"{}",
serde_json::to_string(&JsonMessage {
level: "error".into(),
message: msg.to_string()
})
.unwrap()
);
}
fn warning(&self, msg: &str) {
println!(
"{}",
serde_json::to_string(&JsonMessage {
level: "warning".into(),
message: msg.to_string()
})
.unwrap()
);
}
fn info(&self, msg: &str) {
println!(
"{}",
serde_json::to_string(&JsonMessage {
level: "info".into(),
message: msg.to_string()
})
.unwrap()
);
}
fn success(&self, msg: &str) {
println!(
"{}",
serde_json::to_string(&JsonMessage {
level: "success".into(),
message: msg.to_string()
})
.unwrap()
);
}
fn debug(&self, _msg: &str) {}
fn trace(&self, _msg: &str) {}
fn progress(&self, _msg: &str) {}
}