| 72 | S: Subscriber, |
| 73 | { |
| 74 | fn on_event(&self, event: &Event, _ctx: Context<'_, S>) { |
| 75 | if event.metadata().level() > &(*self.level.read().unwrap()) { |
| 76 | return; |
| 77 | } |
| 78 | let mut fields = MessageVisitor::default(); |
| 79 | fields.insert("name", event.metadata().name().into()); |
| 80 | fields.insert("level", event.metadata().level().as_str().into()); |
| 81 | event.record(&mut fields); |
| 82 | let output = serde_json::json!(fields); |
| 83 | |
| 84 | let level = match event.metadata().level() { |
| 85 | &Level::ERROR => MessageType::ERROR, |
| 86 | &Level::WARN => MessageType::WARNING, |
| 87 | &Level::INFO => MessageType::INFO, |
| 88 | &Level::DEBUG | &Level::TRACE => { |
| 89 | let message = Message::Notification(Notification { |
| 90 | method: LogTrace::METHOD.into(), |
| 91 | params: to_value(LogTraceParams { |
| 92 | verbose: None, |
| 93 | message: to_string_pretty(&output).ok().unwrap_or_default(), |
| 94 | }) |
| 95 | .unwrap_or_default(), |
| 96 | }); |
| 97 | self.sender.try_send(message).ok(); |
| 98 | return; |
| 99 | } |
| 100 | }; |
| 101 | |
| 102 | let message = Message::Notification(Notification { |
| 103 | method: LogMessage::METHOD.into(), |
| 104 | params: to_value(LogMessageParams { |
| 105 | typ: level, |
| 106 | message: to_string_pretty(&output).ok().unwrap_or_default(), |
| 107 | }) |
| 108 | .unwrap_or_default(), |
| 109 | }); |
| 110 | |
| 111 | self.sender.try_send(message).ok(); |
| 112 | } |
| 113 | } |