use std::fmt;
use chrono::{DateTime, Utc};
#[derive(Debug)]
pub struct PostHookCallbackParams {
pub level: String,
pub text: String,
pub date: DateTime<Utc>,
pub timestamp: String,
pub shard: Option<String>,
}
pub struct PreHookCallbackParams<'a> {
pub level: String,
pub args: fmt::Arguments<'a>,
pub date: DateTime<Utc>,
pub timestamp: String,
pub shard: Option<String>,
}
pub type ArgHookCallback = fn(args: Option<fmt::Arguments>, date: DateTime<Utc>) -> Option<String>;
pub type PostHookCallback = fn(params: PostHookCallbackParams) -> Option<String>;
pub type PreHookCallback = fn(params: PreHookCallbackParams) -> Option<String>;
#[derive(Default)]
pub struct LogHooks {
pub pre: Vec<PreHookCallback>,
pub arg: Vec<ArgHookCallback>,
pub post: Vec<PostHookCallback>,
}
impl LogHooks {
pub fn new() -> Self {
Self {
pre: Vec::<PreHookCallback>::new(),
arg: Vec::<ArgHookCallback>::new(),
post: Vec::<PostHookCallback>::new(),
}
}
}