#![cfg(feature = "awscout")]
#![cfg_attr(docsrs, doc(cfg(feature = "awscout")))]
use crate::Message;
use crate::service::write::MessageFormatter;
use crate::service::{CoutWrite, ServiceError};
use serde_json::json;
use std::io::Write;
#[derive(Default)]
pub struct CloudWatchCoutMessageFormatter {}
impl CloudWatchCoutMessageFormatter {
pub fn new() -> Self {
Self::default()
}
}
impl MessageFormatter for CloudWatchCoutMessageFormatter {
fn format_io(
&mut self,
message: &Message,
write: &mut (dyn Write + Send + Sync),
) -> Result<(), ServiceError> {
let json_payload = json!({
"level": message.level().to_string(),
"msg": message.content().to_string(),
})
.to_string();
writeln!(write, "{}", json_payload)?;
Ok(())
}
fn format_fmt(
&mut self,
message: &Message,
write: &mut (dyn std::fmt::Write + Send + Sync),
) -> Result<(), ServiceError> {
let json_payload = json!({
"level": message.level().to_string(),
"msg": message.content().to_string(),
})
.to_string();
writeln!(write, "{}", json_payload)?;
Ok(())
}
}
pub type CloudWatchCout = CoutWrite<CloudWatchCoutMessageFormatter>;