1use crate::Log;
4
5pub struct SessionPrefixLog<L: Log> {
9 session_id: String,
10 inner: L,
11}
12
13impl<L: Log> SessionPrefixLog<L> {
14 pub fn new(session_id: impl Into<String>, inner: L) -> Self {
16 Self {
17 session_id: session_id.into(),
18 inner,
19 }
20 }
21}
22
23#[async_trait::async_trait]
24impl<L: Log> Log for SessionPrefixLog<L> {
25 fn on_incoming(&self, message: &str) {
26 self.inner
27 .on_incoming(&format!("[{}] {message}", self.session_id));
28 }
29 fn on_outgoing(&self, message: &str) {
30 self.inner
31 .on_outgoing(&format!("[{}] {message}", self.session_id));
32 }
33 fn on_event(&self, text: &str) {
34 self.inner
35 .on_event(&format!("[{}] {text}", self.session_id));
36 }
37 async fn shutdown(&self) {
38 self.inner.shutdown().await;
39 }
40}