hermes_tracing_logging_components/impls/
relay.rs1use core::fmt::Display;
2
3use cgp::core::Async;
4use hermes_logging_components::traits::logger::Logger;
5use hermes_logging_components::types::level::LogLevel;
6use hermes_relayer_components::chain::traits::types::chain_id::HasChainId;
7use hermes_relayer_components::relay::impls::packet_clearers::receive_packet::LogClearPacketError;
8use hermes_relayer_components::relay::impls::packet_relayers::general::full_relay::LogRelayPacketAction;
9use hermes_relayer_components::relay::impls::packet_relayers::general::lock::LogSkipRelayLockedPacket;
10use hermes_relayer_components::relay::impls::packet_relayers::general::log::{
11 LogRelayPacketStatus, RelayPacketStatus,
12};
13use hermes_relayer_components::relay::impls::update_client::skip::LogSkipBuildUpdateClientMessage;
14use hermes_relayer_components::relay::impls::update_client::wait::LogWaitUpdateClientHeightStatus;
15use hermes_relayer_components::relay::traits::chains::HasRelayChains;
16use hermes_relayer_components::relay::traits::target::ChainTarget;
17use hermes_relayer_components_extra::batch::worker::LogBatchWorker;
18use tracing::{error, trace};
19
20use crate::contexts::logger::TracingLogger;
21
22impl<'a, Logging, Relay> Logger<Logging, LogSkipRelayLockedPacket<'a, Relay>> for TracingLogger
23where
24 Logging: Async,
25 Relay: HasRelayChains,
26 Relay::Packet: Display,
27 Relay::SrcChain: HasChainId,
28 Relay::DstChain: HasChainId,
29{
30 async fn log(_logging: &Logging, message: &str, details: &LogSkipRelayLockedPacket<'a, Relay>) {
31 trace!(
32 packet = %details.packet,
33 src_chain_id = %details.relay.src_chain().chain_id(),
34 dst_chain_id = %details.relay.dst_chain().chain_id(),
35 "{message}",
36 );
37 }
38}
39
40impl<'a, Logging, Relay> Logger<Logging, LogRelayPacketAction<'a, Relay>> for TracingLogger
41where
42 Logging: Async,
43 Relay: HasRelayChains,
44 Relay::Packet: Display,
45 Relay::SrcChain: HasChainId,
46 Relay::DstChain: HasChainId,
47{
48 async fn log(_logging: &Logging, message: &str, details: &LogRelayPacketAction<'a, Relay>) {
49 trace!(
50 packet = %details.packet,
51 src_chain_id = %details.relay.src_chain().chain_id(),
52 dst_chain_id = %details.relay.dst_chain().chain_id(),
53 relay_progress = ?details.relay_progress,
54 "{message}",
55 );
56 }
57}
58
59impl<'a, Logging, Relay> Logger<Logging, LogClearPacketError<'a, Relay>> for TracingLogger
60where
61 Logging: Async,
62 Relay: HasRelayChains,
63 Relay::Packet: Display,
64 Relay::SrcChain: HasChainId,
65 Relay::DstChain: HasChainId,
66{
67 async fn log(_logging: &Logging, message: &str, details: &LogClearPacketError<'a, Relay>) {
68 error!(
69 packet = %details.packet,
70 src_chain_id = %details.relay.src_chain().chain_id(),
71 dst_chain_id = %details.relay.dst_chain().chain_id(),
72 clear_action = ?details.clear_action,
73 error = ?details.error,
74 "{message}",
75 );
76 }
77}
78
79impl<'a, Logging, Relay> Logger<Logging, LogRelayPacketStatus<'a, Relay>> for TracingLogger
80where
81 Logging: Async,
82 Relay: HasRelayChains,
83 Relay::Packet: Display,
84 Relay::SrcChain: HasChainId,
85 Relay::DstChain: HasChainId,
86{
87 async fn log(_logging: &Logging, message: &str, details: &LogRelayPacketStatus<'a, Relay>) {
88 match details.relay_status {
89 RelayPacketStatus::Start => {
90 trace!(
91 packet = %details.packet,
92 src_chain_id = %details.relay.src_chain().chain_id(),
93 dst_chain_id = %details.relay.dst_chain().chain_id(),
94 relay_status = "start",
95 "{message}",
96 );
97 }
98 RelayPacketStatus::Successful => {
99 trace!(
100 packet = %details.packet,
101 src_chain_id = %details.relay.src_chain().chain_id(),
102 dst_chain_id = %details.relay.dst_chain().chain_id(),
103 relay_status = "successful",
104 "{message}",
105 );
106 }
107 RelayPacketStatus::Error { error } => {
108 error!(
109 packet = %details.packet,
110 src_chain_id = %details.relay.src_chain().chain_id(),
111 dst_chain_id = %details.relay.dst_chain().chain_id(),
112 ?error,
113 "{message}",
114 );
115 }
116 }
117 }
118}
119
120impl<'a, Logging, Relay, Target> Logger<Logging, LogSkipBuildUpdateClientMessage<'a, Relay, Target>>
121 for TracingLogger
122where
123 Logging: Async,
124 Relay: HasRelayChains,
125 Target: ChainTarget<Relay>,
126 Target::TargetChain: HasChainId,
127 Target::CounterpartyChain: HasChainId,
128{
129 async fn log(
130 _logging: &Logging,
131 message: &str,
132 details: &LogSkipBuildUpdateClientMessage<'a, Relay, Target>,
133 ) {
134 trace!(
135 target_chain_id = %Target::target_chain(details.relay).chain_id(),
136 counterparty_chain_id = %Target::counterparty_chain(details.relay).chain_id(),
137 target_height = %details.target_height,
138 "{message}",
139 );
140 }
141}
142
143impl<'a, Logging, Relay, Target> Logger<Logging, LogWaitUpdateClientHeightStatus<'a, Relay, Target>>
144 for TracingLogger
145where
146 Logging: Async,
147 Relay: HasRelayChains,
148 Target: ChainTarget<Relay>,
149 Target::TargetChain: HasChainId,
150 Target::CounterpartyChain: HasChainId,
151{
152 async fn log(
153 _logging: &Logging,
154 message: &str,
155 details: &LogWaitUpdateClientHeightStatus<'a, Relay, Target>,
156 ) {
157 match details {
158 LogWaitUpdateClientHeightStatus::Waiting {
159 relay,
160 target_height,
161 } => {
162 trace!(
163 target_chain_id = %Target::target_chain(relay).chain_id(),
164 counterparty_chain_id = %Target::counterparty_chain(relay).chain_id(),
165 %target_height,
166 "{message}",
167 );
168 }
169 LogWaitUpdateClientHeightStatus::HeightReached {
170 relay,
171 target_height,
172 current_height,
173 } => {
174 trace!(
175 target_chain_id = %Target::target_chain(relay).chain_id(),
176 counterparty_chain_id = %Target::counterparty_chain(relay).chain_id(),
177 %target_height,
178 %current_height,
179 "{message}",
180 );
181 }
182 }
183 }
184}
185
186impl<'a, Logging, Relay, Target> Logger<Logging, LogBatchWorker<'a, Relay, Target>>
187 for TracingLogger
188where
189 Logging: Async,
190 Relay: HasRelayChains,
191 Target: ChainTarget<Relay>,
192 Target::TargetChain: HasChainId,
193 Target::CounterpartyChain: HasChainId,
194{
195 async fn log(_logging: &Logging, message: &str, details: &LogBatchWorker<'a, Relay, Target>) {
196 match details.log_level {
197 LogLevel::Error => {
198 error!(
199 target_chain_id = %Target::target_chain(details.relay).chain_id(),
200 counterparty_chain_id = %Target::counterparty_chain(details.relay).chain_id(),
201 details = %details.details,
202 "{message}",
203 );
204 }
205 _ => {
206 trace!(
207 target_chain_id = %Target::target_chain(details.relay).chain_id(),
208 counterparty_chain_id = %Target::counterparty_chain(details.relay).chain_id(),
209 details = %details.details,
210 "{message}",
211 );
212 }
213 }
214 }
215}