use crate::config::processed::EncoderInternal;
use crate::error::Result; use crate::model::LogEvent;
pub mod json;
pub mod pattern;
pub mod util;
pub trait EventFormatter: Send + Sync + 'static {
fn format_event(&self, event: &LogEvent) -> Result<Vec<u8>>;
}
pub(crate) fn new_event_formatter(config: &EncoderInternal) -> Box<dyn EventFormatter> {
match config {
EncoderInternal::Pattern(pattern_conf) => {
Box::new(pattern::PatternFormatter::new(&pattern_conf.pattern_string))
}
EncoderInternal::JsonLines(json_conf) => {
Box::new(json::JsonLinesFormatter::new(json_conf.clone()))
}
}
}