Skip to content

Commit

Permalink
Use _event, describe the tradeoffs made in the readme.
Browse files Browse the repository at this point in the history
  • Loading branch information
flub committed Nov 29, 2024
1 parent 60a79a2 commit 7acd54f
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 15 deletions.
2 changes: 1 addition & 1 deletion iroh-relay/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,7 @@ impl Actor {
}

event!(
target: "iroh::events::relay::connected",
target: "iroh::_events::relay::connected",
Level::DEBUG,
home = self.is_preferred,
url = %self.url,
Expand Down
14 changes: 10 additions & 4 deletions iroh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ The library uses [tracing](https://docs.rs/tracing) to for logging as
well as for **structured events**. Events are different from normal
logging by convention:

- The [target] has a prefix of `$crate_name::events` and target names
- The [target] has a prefix of `$crate_name::_events` and target names
are `::` separated.

For this library the target will always start with `iroh::events::`.
For this library the target will always start with `iroh::_events::`.

- There is **no message**.

Expand All @@ -33,13 +33,19 @@ logging by convention:

- The [Level] is always `DEBUG`.

This is a compromise between being able to process events using
automated tooling using custom subscribers and them still producing
distinguishing output in logs when using the default tracing
subscriber formatters. While still being unlikely to conflict with
real modules.

[target]: https://docs.rs/tracing/latest/tracing/struct.Metadata.html#method.target
[fields]: https://docs.rs/tracing/latest/tracing/#recording-fields
[Level]: https://docs.rs/tracing/latest/tracing/struct.Level.html

### Using events

If desired an application can use the `$crate_name::events` target to
If desired an application can use the `$crate_name::_events` target to
handle events by a different subscriber. However with the default
file logging it is already easy to search for all events, e.g. using
ripgrep:
Expand All @@ -61,7 +67,7 @@ recommended to write them using the `event!()` macro:

```rust
event!(
target: "iroh::event::subject",
target: "iroh::_event::subject",
Level::DEBUG,
field = value,
);
Expand Down
8 changes: 4 additions & 4 deletions iroh/src/magicsock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -878,7 +878,7 @@ impl MagicSock {
match src {
DiscoMessageSource::Relay { url, .. } => {
event!(
target: "iroh::events::call-me-maybe::recv",
target: "iroh::_events::call-me-maybe::recv",
Level::DEBUG,
remote_node = sender.fmt_short(),
via = ?url,
Expand Down Expand Up @@ -934,7 +934,7 @@ impl MagicSock {
ping_observed_addr: addr.clone(),
});
event!(
target: "iroh::events::pong::sent",
target: "iroh::_events::pong::sent",
Level::DEBUG,
remote_node = %sender.fmt_short(),
dst = ?addr,
Expand Down Expand Up @@ -1060,7 +1060,7 @@ impl MagicSock {
Ok(()) => {
if let disco::Message::CallMeMaybe(CallMeMaybe { ref my_numbers }) = msg {
event!(
target: "iroh::events::call-me-maybe::sent",
target: "iroh::_events::call-me-maybe::sent",
Level::DEBUG,
remote_node = %dst.fmt_short(),
via = ?url,
Expand Down Expand Up @@ -2465,7 +2465,7 @@ impl DiscoveredDirectAddrs {
let updated = self.addrs.update(addrs).is_ok();
if updated {
event!(
target: "iroh::events::direct_addrs",
target: "iroh::_events::direct_addrs",
Level::DEBUG,
addrs = ?self.addrs.get(),
);
Expand Down
8 changes: 4 additions & 4 deletions iroh/src/magicsock/node_map/node_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ impl NodeState {
if let Ok(prev_typ) = self.conn_type.update(typ.clone()) {
// The connection type has changed.
event!(
target: "iroh::events::conn_type::changed",
target: "iroh::_events::conn_type::changed",
Level::DEBUG,
remote_node = %self.node_id.fmt_short(),
conn_type = ?typ,
Expand Down Expand Up @@ -470,7 +470,7 @@ impl NodeState {
trace!(tx = %hex::encode(tx_id), %dst, ?purpose,
dst = %self.node_id.fmt_short(), "start ping");
event!(
target: "iroh::events::ping::sent",
target: "iroh::_events::ping::sent",
Level::DEBUG,
remote_node = %self.node_id.fmt_short(),
?dst,
Expand Down Expand Up @@ -761,7 +761,7 @@ impl NodeState {
}
};
event!(
target: "iroh::events::ping::recv",
target: "iroh::_events::ping::recv",
Level::DEBUG,
remote_node = %self.node_id.fmt_short(),
src = ?path,
Expand Down Expand Up @@ -863,7 +863,7 @@ impl NodeState {
src: SendAddr,
) -> Option<(SocketAddr, PublicKey)> {
event!(
target: "iroh::events::pong::recv",
target: "iroh::_events::pong::recv",
Level::DEBUG,
remote_node = self.node_id.fmt_short(),
?src,
Expand Down
4 changes: 2 additions & 2 deletions iroh/src/magicsock/node_map/path_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ impl PathState {
if let SendAddr::Udp(ref path) = self.path {
if self.recent_pong.is_none() {
event!(
target: "iroh::events::holepunched",
target: "iroh::_events::holepunched",
Level::DEBUG,
remote_node = %self.node_id.fmt_short(),
path = ?path,
Expand Down Expand Up @@ -259,7 +259,7 @@ impl PathState {
None => {
if let SendAddr::Udp(ref addr) = self.path {
event!(
target: "iroh::events::holepunched",
target: "iroh::_events::holepunched",
Level::DEBUG,
remote_node = %self.node_id.fmt_short(),
path = ?addr,
Expand Down

0 comments on commit 7acd54f

Please sign in to comment.