1use std::fmt;
2
3use chrono::{DateTime, Utc};
4
5#[derive(Debug)]
7pub struct PostHookCallbackParams {
8 pub level: String,
10 pub text: String,
12 pub date: DateTime<Utc>,
14 pub timestamp: String,
16 pub shard: Option<String>,
18 }
20
21pub struct PreHookCallbackParams<'a> {
23 pub level: String,
25 pub args: fmt::Arguments<'a>,
27 pub date: DateTime<Utc>,
29 pub timestamp: String,
31 pub shard: Option<String>,
33}
34
35pub type ArgHookCallback = fn(args: Option<fmt::Arguments>, date: DateTime<Utc>) -> Option<String>;
41
42pub type PostHookCallback = fn(params: PostHookCallbackParams) -> Option<String>;
47
48pub type PreHookCallback = fn(params: PreHookCallbackParams) -> Option<String>;
53
54#[derive(Default)]
55pub struct LogHooks {
56 pub pre: Vec<PreHookCallback>,
57 pub arg: Vec<ArgHookCallback>,
58 pub post: Vec<PostHookCallback>,
59}
60
61impl LogHooks {
62 pub fn new() -> Self {
63 Self {
64 pre: Vec::<PreHookCallback>::new(),
65 arg: Vec::<ArgHookCallback>::new(),
66 post: Vec::<PostHookCallback>::new(),
67 }
68 }
69}