diff --git a/Cargo.lock b/Cargo.lock index 6074b010..a4cb5ab7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1750,7 +1750,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2405,7 +2405,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -3121,7 +3121,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3749,7 +3749,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.5.10", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -3786,9 +3786,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -4325,7 +4325,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/docs/development/code_style.mdx b/docs/development/code_style.mdx index c794627c..469b3cc3 100644 --- a/docs/development/code_style.mdx +++ b/docs/development/code_style.mdx @@ -128,7 +128,7 @@ Keep in mind the frequency that the log will be reached, and the relevancy to a ```rs // Good error!( - error = %err, + error = ?err, room_id = %room_id, "Failed to send event to room" ); @@ -264,7 +264,7 @@ pub async fn send_federation_request( warn!( destination = %destination, attempt = attempt, - error = %err, + error = ?err, retry_delay_ms = retry_delay.as_millis(), "Federation request failed, retrying" ); diff --git a/src/admin/admin.rs b/src/admin/admin.rs index bec02af0..c9f89a6d 100644 --- a/src/admin/admin.rs +++ b/src/admin/admin.rs @@ -48,7 +48,7 @@ pub enum AdminCommand { Query(QueryCommand), } -#[tracing::instrument(skip_all, name = "command")] +#[tracing::instrument(skip_all, name = "command", level = "info")] pub(super) async fn process(command: AdminCommand, context: &Context<'_>) -> Result { use AdminCommand::*; diff --git a/src/admin/debug/commands.rs b/src/admin/debug/commands.rs index 0b6e45b2..3b0ee954 100644 --- a/src/admin/debug/commands.rs +++ b/src/admin/debug/commands.rs @@ -456,7 +456,7 @@ pub(super) async fn verify_pdu(&self, event_id: OwnedEventId) -> Result { } #[admin_command] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "info")] pub(super) async fn first_pdu_in_room(&self, room_id: OwnedRoomId) -> Result { self.bail_restricted()?; @@ -483,7 +483,7 @@ pub(super) async fn first_pdu_in_room(&self, room_id: OwnedRoomId) -> Result { } #[admin_command] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "info")] pub(super) async fn latest_pdu_in_room(&self, room_id: OwnedRoomId) -> Result { self.bail_restricted()?; @@ -510,7 +510,7 @@ pub(super) async fn latest_pdu_in_room(&self, room_id: OwnedRoomId) -> Result { } #[admin_command] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "info")] pub(super) async fn force_set_room_state_from_server( &self, room_id: OwnedRoomId, diff --git a/src/admin/processor.rs b/src/admin/processor.rs index 77f5a35f..e508f98e 100644 --- a/src/admin/processor.rs +++ b/src/admin/processor.rs @@ -37,7 +37,7 @@ pub(super) fn dispatch(services: Arc, command: CommandInput) -> Proces Box::pin(handle_command(services, command)) } -#[tracing::instrument(skip_all, name = "admin")] +#[tracing::instrument(skip_all, name = "admin", level = "info")] async fn handle_command(services: Arc, command: CommandInput) -> ProcessorResult { AssertUnwindSafe(Box::pin(process_command(services, &command))) .catch_unwind() diff --git a/src/admin/room/moderation.rs b/src/admin/room/moderation.rs index 4d106977..a81bd4b0 100644 --- a/src/admin/room/moderation.rs +++ b/src/admin/room/moderation.rs @@ -98,7 +98,7 @@ async fn ban_room(&self, room: OwnedRoomOrAliasId) -> Result { { | Ok((room_id, servers)) => { debug!( - ?room_id, + %room_id, ?servers, "Got federation response fetching room ID for room {room}" ); @@ -240,7 +240,7 @@ async fn ban_list_of_rooms(&self) -> Result { { | Ok((room_id, servers)) => { debug!( - ?room_id, + %room_id, ?servers, "Got federation response fetching room ID for \ {room}", @@ -397,7 +397,7 @@ async fn unban_room(&self, room: OwnedRoomOrAliasId) -> Result { { | Ok((room_id, servers)) => { debug!( - ?room_id, + %room_id, ?servers, "Got federation response fetching room ID for room {room}" ); diff --git a/src/api/client/account.rs b/src/api/client/account.rs index 041d66f7..ab2a5d00 100644 --- a/src/api/client/account.rs +++ b/src/api/client/account.rs @@ -49,7 +49,7 @@ const RANDOM_USER_ID_LENGTH: usize = 10; /// /// Note: This will not reserve the username, so the username might become /// invalid when trying to register -#[tracing::instrument(skip_all, fields(%client), name = "register_available")] +#[tracing::instrument(skip_all, fields(%client), name = "register_available", level = "info")] pub(crate) async fn get_register_available_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -138,7 +138,7 @@ pub(crate) async fn get_register_available_route( /// - If `inhibit_login` is false: Creates a device and returns device id and /// access_token #[allow(clippy::doc_markdown)] -#[tracing::instrument(skip_all, fields(%client), name = "register")] +#[tracing::instrument(skip_all, fields(%client), name = "register", level = "info")] pub(crate) async fn register_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -603,7 +603,7 @@ pub(crate) async fn register_route( /// last seen ts) /// - Forgets to-device events /// - Triggers device list updates -#[tracing::instrument(skip_all, fields(%client), name = "change_password")] +#[tracing::instrument(skip_all, fields(%client), name = "change_password", level = "info")] pub(crate) async fn change_password_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -727,7 +727,7 @@ pub(crate) async fn whoami_route( /// - Forgets all to-device events /// - Triggers device list updates /// - Removes ability to log in again -#[tracing::instrument(skip_all, fields(%client), name = "deactivate")] +#[tracing::instrument(skip_all, fields(%client), name = "deactivate", level = "info")] pub(crate) async fn deactivate_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/alias.rs b/src/api/client/alias.rs index 97c1a1bd..a08cf2c4 100644 --- a/src/api/client/alias.rs +++ b/src/api/client/alias.rs @@ -102,7 +102,7 @@ pub(crate) async fn get_alias_route( }; let servers = room_available_servers(&services, &room_id, &room_alias, servers).await; - debug!(?room_alias, ?room_id, "available servers: {servers:?}"); + debug!(%room_alias, %room_id, "available servers: {servers:?}"); Ok(get_alias::v3::Response::new(room_id, servers)) } diff --git a/src/api/client/context.rs b/src/api/client/context.rs index 91aee1b2..f9f5abff 100644 --- a/src/api/client/context.rs +++ b/src/api/client/context.rs @@ -74,7 +74,7 @@ pub(crate) async fn get_context_route( } if !visible { - debug_warn!(req_evt = ?event_id, ?base_id, ?room_id, "Event requested by {sender_user} but is not allowed to see it, returning 404"); + debug_warn!(req_evt = %event_id, ?base_id, %room_id, "Event requested by {sender_user} but is not allowed to see it, returning 404"); return Err!(Request(NotFound("Event not found."))); } diff --git a/src/api/client/device.rs b/src/api/client/device.rs index b0a7e142..c88012cd 100644 --- a/src/api/client/device.rs +++ b/src/api/client/device.rs @@ -49,7 +49,7 @@ pub(crate) async fn get_device_route( /// # `PUT /_matrix/client/r0/devices/{deviceId}` /// /// Updates the metadata on a given device of the sender user. -#[tracing::instrument(skip_all, fields(%client), name = "update_device")] +#[tracing::instrument(skip_all, fields(%client), name = "update_device", level = "debug")] pub(crate) async fn update_device_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/directory.rs b/src/api/client/directory.rs index 00879274..190d59c1 100644 --- a/src/api/client/directory.rs +++ b/src/api/client/directory.rs @@ -44,7 +44,7 @@ use crate::Ruma; /// Lists the public rooms on this server. /// /// - Rooms are ordered by the number of joined members -#[tracing::instrument(skip_all, fields(%client), name = "publicrooms")] +#[tracing::instrument(skip_all, fields(%client), name = "publicrooms", level = "info")] pub(crate) async fn get_public_rooms_filtered_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -80,7 +80,7 @@ pub(crate) async fn get_public_rooms_filtered_route( /// Lists the public rooms on this server. /// /// - Rooms are ordered by the number of joined members -#[tracing::instrument(skip_all, fields(%client), name = "publicrooms")] +#[tracing::instrument(skip_all, fields(%client), name = "publicrooms", level = "info")] pub(crate) async fn get_public_rooms_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -116,7 +116,7 @@ pub(crate) async fn get_public_rooms_route( /// # `PUT /_matrix/client/r0/directory/list/room/{roomId}` /// /// Sets the visibility of a given room in the room directory. -#[tracing::instrument(skip_all, fields(%client), name = "room_directory")] +#[tracing::instrument(skip_all, fields(%client), name = "room_directory", level = "info")] pub(crate) async fn set_room_visibility_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/keys.rs b/src/api/client/keys.rs index 1e29553a..e462979b 100644 --- a/src/api/client/keys.rs +++ b/src/api/client/keys.rs @@ -52,7 +52,7 @@ pub(crate) async fn upload_keys_route( .deserialize() .inspect_err(|e| { debug_warn!( - ?key_id, + %key_id, ?one_time_key, "Invalid one time key JSON submitted by client, skipping: {e}" ); @@ -94,8 +94,8 @@ pub(crate) async fn upload_keys_route( { if existing_keys.json().get() == device_keys.json().get() { debug!( - ?sender_user, - ?sender_device, + %sender_user, + %sender_device, ?device_keys, "Ignoring user uploaded keys as they are an exact copy already in the \ database" @@ -338,7 +338,7 @@ pub(crate) async fn upload_signatures_route( for (user_id, keys) in &body.signed_keys { for (key_id, key) in keys { let Ok(key) = serde_json::to_value(key) - .inspect_err(|e| debug_warn!(?key_id, "Invalid \"key\" JSON: {e}")) + .inspect_err(|e| debug_warn!(%key_id, "Invalid \"key\" JSON: {e}")) else { continue; }; diff --git a/src/api/client/membership/invite.rs b/src/api/client/membership/invite.rs index 72e8c0d2..646852aa 100644 --- a/src/api/client/membership/invite.rs +++ b/src/api/client/membership/invite.rs @@ -21,7 +21,7 @@ use crate::Ruma; /// # `POST /_matrix/client/r0/rooms/{roomId}/invite` /// /// Tries to send an invite event into the room. -#[tracing::instrument(skip_all, fields(%client), name = "invite")] +#[tracing::instrument(skip_all, fields(%client), name = "invite", level = "info")] pub(crate) async fn invite_user_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/membership/join.rs b/src/api/client/membership/join.rs index 2d16a70e..8b80e275 100644 --- a/src/api/client/membership/join.rs +++ b/src/api/client/membership/join.rs @@ -59,7 +59,7 @@ use crate::Ruma; /// rules locally /// - If the server does not know about the room: asks other servers over /// federation -#[tracing::instrument(skip_all, fields(%client), name = "join")] +#[tracing::instrument(skip_all, fields(%client), name = "join", level = "info")] pub(crate) async fn join_room_by_id_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -131,7 +131,7 @@ pub(crate) async fn join_room_by_id_route( /// - If the server does not know about the room: use the server name query /// param if specified. if not specified, asks other servers over federation /// via room alias server name and room ID server name -#[tracing::instrument(skip_all, fields(%client), name = "join")] +#[tracing::instrument(skip_all, fields(%client), name = "join", level = "info")] pub(crate) async fn join_room_by_id_or_alias_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -351,7 +351,7 @@ pub async fn join_room_by_id_helper( Ok(join_room_by_id::v3::Response::new(room_id.to_owned())) } -#[tracing::instrument(skip_all, fields(%sender_user, %room_id), name = "join_remote")] +#[tracing::instrument(skip_all, fields(%sender_user, %room_id), name = "join_remote", level = "info")] async fn join_room_by_id_helper_remote( services: &Services, sender_user: &UserId, @@ -709,7 +709,7 @@ async fn join_room_by_id_helper_remote( Ok(()) } -#[tracing::instrument(skip_all, fields(%sender_user, %room_id), name = "join_local")] +#[tracing::instrument(skip_all, fields(%sender_user, %room_id), name = "join_local", level = "info")] async fn join_room_by_id_helper_local( services: &Services, sender_user: &UserId, diff --git a/src/api/client/membership/knock.rs b/src/api/client/membership/knock.rs index 0ecbe2f5..7970f5e8 100644 --- a/src/api/client/membership/knock.rs +++ b/src/api/client/membership/knock.rs @@ -44,7 +44,7 @@ use crate::Ruma; /// # `POST /_matrix/client/*/knock/{roomIdOrAlias}` /// /// Tries to knock the room to ask permission to join for the sender user. -#[tracing::instrument(skip_all, fields(%client), name = "knock")] +#[tracing::instrument(skip_all, fields(%client), name = "knock", level = "info")] pub(crate) async fn knock_room_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/membership/mod.rs b/src/api/client/membership/mod.rs index 9123bac8..f685922e 100644 --- a/src/api/client/membership/mod.rs +++ b/src/api/client/membership/mod.rs @@ -63,7 +63,7 @@ pub(crate) async fn joined_rooms_route( /// /// Performs automatic deactivation if `auto_deactivate_banned_room_attempts` is /// enabled -#[tracing::instrument(skip(services))] +#[tracing::instrument(skip(services), level = "info")] pub(crate) async fn banned_room_check( services: &Services, user_id: &UserId, diff --git a/src/api/client/relations.rs b/src/api/client/relations.rs index ec37b039..35fb1149 100644 --- a/src/api/client/relations.rs +++ b/src/api/client/relations.rs @@ -115,7 +115,7 @@ async fn paginate_relations_with_filter( .user_can_see_event(sender_user, room_id, target) .await { - debug_warn!(req_evt = ?target, ?room_id, "Event relations requested by {sender_user} but is not allowed to see it, returning 404"); + debug_warn!(req_evt = %target, %room_id, "Event relations requested by {sender_user} but is not allowed to see it, returning 404"); return Err!(Request(NotFound("Event not found."))); } diff --git a/src/api/client/report.rs b/src/api/client/report.rs index 1752b941..d1a6e61a 100644 --- a/src/api/client/report.rs +++ b/src/api/client/report.rs @@ -29,7 +29,7 @@ struct Report { /// # `POST /_matrix/client/v3/rooms/{roomId}/report` /// /// Reports an abusive room to homeserver admins -#[tracing::instrument(skip_all, fields(%client), name = "report_room")] +#[tracing::instrument(skip_all, fields(%client), name = "report_room", level = "info")] pub(crate) async fn report_room_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -85,7 +85,7 @@ pub(crate) async fn report_room_route( /// # `POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}` /// /// Reports an inappropriate event to homeserver admins -#[tracing::instrument(skip_all, fields(%client), name = "report_event")] +#[tracing::instrument(skip_all, fields(%client), name = "report_event", level = "info")] pub(crate) async fn report_event_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -133,7 +133,7 @@ pub(crate) async fn report_event_route( Ok(report_content::v3::Response {}) } -#[tracing::instrument(skip_all, fields(%client), name = "report_user")] +#[tracing::instrument(skip_all, fields(%client), name = "report_user", level = "info")] pub(crate) async fn report_user_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/room/create.rs b/src/api/client/room/create.rs index 0359e9c2..700b15c2 100644 --- a/src/api/client/room/create.rs +++ b/src/api/client/room/create.rs @@ -492,7 +492,7 @@ pub(crate) async fn create_room_route( .boxed() .await { - warn!(%e, "Failed to send invite"); + warn!(?e, "Failed to send invite"); } } @@ -627,7 +627,7 @@ async fn room_alias_check( .map_err(|e| { err!(Request(InvalidParam(debug_error!( ?e, - ?room_alias_name, + %room_alias_name, "Failed to parse room alias.", )))) })?; @@ -711,7 +711,7 @@ fn custom_room_id_check(services: &Services, custom_room_id: &str) -> Result, InsecureClientIp(client): InsecureClientIp, @@ -116,7 +116,10 @@ async fn local_room_summary_response( room_id: &RoomId, sender_user: Option<&UserId>, ) -> Result { - trace!(?sender_user, "Sending local room summary response for {room_id:?}"); + trace!( + sender_user = sender_user.map(tracing::field::display), + "Sending local room summary response for {room_id:?}" + ); let (join_rule, world_readable, guest_can_join) = join3( services.rooms.state_accessor.get_join_rules(room_id), services.rooms.state_accessor.is_world_readable(room_id), @@ -228,7 +231,7 @@ async fn remote_room_summary_hierarchy_response( servers: &[OwnedServerName], sender_user: Option<&UserId>, ) -> Result { - trace!(?sender_user, ?servers, "Sending remote room summary response for {room_id:?}"); + trace!(sender_user = ?sender_user.map(tracing::field::display), ?servers, "Sending remote room summary response for {room_id:?}"); if !services.config.allow_federation { return Err!(Request(Forbidden("Federation is disabled."))); } diff --git a/src/api/client/session.rs b/src/api/client/session.rs index df4d935c..d1036e21 100644 --- a/src/api/client/session.rs +++ b/src/api/client/session.rs @@ -35,7 +35,7 @@ use crate::Ruma; /// /// Get the supported login types of this server. One of these should be used as /// the `type` field when logging in. -#[tracing::instrument(skip_all, fields(%client), name = "login")] +#[tracing::instrument(skip_all, fields(%client), name = "login", level = "info")] pub(crate) async fn get_login_types_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -53,7 +53,7 @@ pub(crate) async fn get_login_types_route( /// Authenticates the given user by its ID and its password. /// /// Returns the user ID if successful, and an error otherwise. -#[tracing::instrument(skip_all, fields(%user_id), name = "password")] +#[tracing::instrument(skip_all, fields(%user_id), name = "password", level = "debug")] pub(crate) async fn password_login( services: &Services, user_id: &UserId, @@ -96,7 +96,7 @@ pub(crate) async fn password_login( /// /// Creates the user if the user is found in the LDAP and do not already have an /// account. -#[tracing::instrument(skip_all, fields(%user_id), name = "ldap")] +#[tracing::instrument(skip_all, fields(%user_id), name = "ldap", level = "debug")] pub(super) async fn ldap_login( services: &Services, user_id: &UserId, @@ -212,7 +212,7 @@ pub(crate) async fn handle_login( /// Note: You can use [`GET /// /_matrix/client/r0/login`](fn.get_supported_versions_route.html) to see /// supported login types. -#[tracing::instrument(skip_all, fields(%client), name = "login")] +#[tracing::instrument(skip_all, fields(%client), name = "login", level = "info")] pub(crate) async fn login_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -345,7 +345,7 @@ pub(crate) async fn login_route( /// to log in with the m.login.token flow. /// /// -#[tracing::instrument(skip_all, fields(%client), name = "login_token")] +#[tracing::instrument(skip_all, fields(%client), name = "login_token", level = "info")] pub(crate) async fn login_token_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -413,7 +413,7 @@ pub(crate) async fn login_token_route( /// last seen ts) /// - Forgets to-device events /// - Triggers device list updates -#[tracing::instrument(skip_all, fields(%client), name = "logout")] +#[tracing::instrument(skip_all, fields(%client), name = "logout", level = "info")] pub(crate) async fn logout_route( State(services): State, InsecureClientIp(client): InsecureClientIp, @@ -440,7 +440,7 @@ pub(crate) async fn logout_route( /// Note: This is equivalent to calling [`GET /// /_matrix/client/r0/logout`](fn.logout_route.html) from each device of this /// user. -#[tracing::instrument(skip_all, fields(%client), name = "logout")] +#[tracing::instrument(skip_all, fields(%client), name = "logout", level = "info")] pub(crate) async fn logout_all_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/client/state.rs b/src/api/client/state.rs index c411e32c..63de57ea 100644 --- a/src/api/client/state.rs +++ b/src/api/client/state.rs @@ -140,8 +140,8 @@ pub(crate) async fn get_state_events_for_key_route( .await .map_err(|_| { err!(Request(NotFound(debug_warn!( - room_id = ?body.room_id, - event_type = ?body.event_type, + room_id = %body.room_id, + event_type = %body.event_type, "State event not found in room.", )))) })?; @@ -226,7 +226,7 @@ async fn allowed_to_send_state_event( match event_type { | StateEventType::RoomCreate => { return Err!(Request(BadJson(debug_warn!( - ?room_id, + %room_id, "You cannot update m.room.create after a room has been created." )))); }, @@ -237,7 +237,7 @@ async fn allowed_to_send_state_event( | Ok(acl_content) => { if acl_content.allow_is_empty() { return Err!(Request(BadJson(debug_warn!( - ?room_id, + %room_id, "Sending an ACL event with an empty allow key will permanently \ brick the room for non-conduwuit's as this equates to no servers \ being allowed to participate in this room." @@ -246,7 +246,7 @@ async fn allowed_to_send_state_event( if acl_content.deny_contains("*") && acl_content.allow_contains("*") { return Err!(Request(BadJson(debug_warn!( - ?room_id, + %room_id, "Sending an ACL event with a deny and allow key value of \"*\" will \ permanently brick the room for non-conduwuit's as this equates to \ no servers being allowed to participate in this room." @@ -258,7 +258,7 @@ async fn allowed_to_send_state_event( && !acl_content.allow_contains(services.globals.server_name().as_str()) { return Err!(Request(BadJson(debug_warn!( - ?room_id, + %room_id, "Sending an ACL event with a deny key value of \"*\" and without \ your own server name in the allow key will result in you being \ unable to participate in this room." @@ -270,7 +270,7 @@ async fn allowed_to_send_state_event( && !acl_content.allow_contains(services.globals.server_name().as_str()) { return Err!(Request(BadJson(debug_warn!( - ?room_id, + %room_id, "Sending an ACL event for an allow key without \"*\" and without \ your own server name in the allow key will result in you being \ unable to participate in this room." diff --git a/src/api/client/sync/v3/joined.rs b/src/api/client/sync/v3/joined.rs index 1fbd283a..9b68a88a 100644 --- a/src/api/client/sync/v3/joined.rs +++ b/src/api/client/sync/v3/joined.rs @@ -50,8 +50,8 @@ use crate::client::{ level = "debug", skip_all, fields( - room_id = ?room_id, - syncing_user = ?sync_context.syncing_user, + room_id = %room_id, + syncing_user = %sync_context.syncing_user, ), )] pub(super) async fn load_joined_room( @@ -578,7 +578,7 @@ async fn build_notification_counts( ) .await; - trace!(?notification_count, ?highlight_count, "syncing new notification counts"); + trace!(%notification_count, %highlight_count, "syncing new notification counts"); Ok(Some(UnreadNotificationsCount { notification_count: Some(notification_count), @@ -692,8 +692,8 @@ async fn build_room_summary( }; trace!( - ?joined_member_count, - ?invited_member_count, + %joined_member_count, + %invited_member_count, heroes_length = heroes.as_ref().map(HashSet::len), "syncing updated summary" ); diff --git a/src/api/client/sync/v3/left.rs b/src/api/client/sync/v3/left.rs index a63a4d3e..7850fb88 100644 --- a/src/api/client/sync/v3/left.rs +++ b/src/api/client/sync/v3/left.rs @@ -307,8 +307,8 @@ async fn build_left_state_and_timeline( } trace!( - ?timeline_start_count, - ?timeline_end_count, + %timeline_start_count, + %timeline_end_count, "syncing {} timeline events (limited = {}) and {} state events", timeline.pdus.len(), timeline.limited, diff --git a/src/api/client/sync/v3/mod.rs b/src/api/client/sync/v3/mod.rs index 58219d59..e371d275 100644 --- a/src/api/client/sync/v3/mod.rs +++ b/src/api/client/sync/v3/mod.rs @@ -275,7 +275,7 @@ pub(crate) async fn build_sync_events( match joined_room { | Ok((room, updates)) => Some((room_id, room, updates)), | Err(err) => { - warn!(?err, ?room_id, "error loading joined room {}", room_id); + warn!(?err, %room_id, "error loading joined room"); None }, } diff --git a/src/api/client/sync/v3/state.rs b/src/api/client/sync/v3/state.rs index 0f20f797..b22074d8 100644 --- a/src/api/client/sync/v3/state.rs +++ b/src/api/client/sync/v3/state.rs @@ -217,7 +217,7 @@ pub(super) async fn build_state_incremental<'a>( the performance penalty is acceptable. */ - trace!(?timeline_is_linear, ?timeline.limited, "computing state for incremental sync"); + trace!(%timeline_is_linear, %timeline.limited, "computing state for incremental sync"); // fetch the shorteventids of state events in the timeline let state_events_in_timeline: BTreeSet = services diff --git a/src/api/client/unstable.rs b/src/api/client/unstable.rs index be10c13c..d684c609 100644 --- a/src/api/client/unstable.rs +++ b/src/api/client/unstable.rs @@ -26,7 +26,7 @@ use crate::Ruma; /// TODO: Implement pagination, currently this just returns everything /// /// An implementation of [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666) -#[tracing::instrument(skip_all, fields(%client), name = "mutual_rooms")] +#[tracing::instrument(skip_all, fields(%client), name = "mutual_rooms", level = "info")] pub(crate) async fn get_mutual_rooms_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/server/get_missing_events.rs b/src/api/server/get_missing_events.rs index 04dc30ed..d727c694 100644 --- a/src/api/server/get_missing_events.rs +++ b/src/api/server/get_missing_events.rs @@ -40,7 +40,7 @@ pub(crate) async fn get_missing_events_route( while i < queued_events.len() && events.len() < limit { let Ok(pdu) = services.rooms.timeline.get_pdu(&queued_events[i]).await else { debug!( - ?body.origin, + body.origin = body.origin.as_ref().map(tracing::field::display), "Event {} does not exist locally, skipping", &queued_events[i] ); i = i.saturating_add(1); @@ -59,7 +59,7 @@ pub(crate) async fn get_missing_events_route( .await { debug!( - ?body.origin, + body.origin = body.origin.as_ref().map(tracing::field::display), "Server cannot see {:?} in {:?}, skipping", pdu.event_id, pdu.room_id ); i = i.saturating_add(1); @@ -68,7 +68,7 @@ pub(crate) async fn get_missing_events_route( let Ok(event) = to_canonical_object(&pdu) else { debug_error!( - ?body.origin, + body.origin = body.origin.as_ref().map(tracing::field::display), "Failed to convert PDU in database to canonical JSON: {pdu:?}" ); i = i.saturating_add(1); diff --git a/src/api/server/invite.rs b/src/api/server/invite.rs index e017c171..bea79510 100644 --- a/src/api/server/invite.rs +++ b/src/api/server/invite.rs @@ -19,7 +19,7 @@ use crate::Ruma; /// # `PUT /_matrix/federation/v2/invite/{roomId}/{eventId}` /// /// Invites a remote user to a room. -#[tracing::instrument(skip_all, fields(%client), name = "invite")] +#[tracing::instrument(skip_all, fields(%client), name = "invite", level = "info")] pub(crate) async fn create_invite_route( State(services): State, InsecureClientIp(client): InsecureClientIp, diff --git a/src/api/server/make_join.rs b/src/api/server/make_join.rs index c77eb193..ce46caab 100644 --- a/src/api/server/make_join.rs +++ b/src/api/server/make_join.rs @@ -22,7 +22,7 @@ use crate::Ruma; /// # `GET /_matrix/federation/v1/make_join/{roomId}/{userId}` /// /// Creates a join template. -#[tracing::instrument(skip_all, fields(room_id = %body.room_id, user_id = %body.user_id, origin = %body.origin()))] +#[tracing::instrument(skip_all, fields(room_id = %body.room_id, user_id = %body.user_id, origin = %body.origin()), level = "info")] pub(crate) async fn create_join_event_template_route( State(services): State, body: Ruma, diff --git a/src/api/server/send.rs b/src/api/server/send.rs index 9c5bfd2b..58a8c82b 100644 --- a/src/api/server/send.rs +++ b/src/api/server/send.rs @@ -3,9 +3,7 @@ use std::{collections::BTreeMap, net::IpAddr, time::Instant}; use axum::extract::State; use axum_client_ip::InsecureClientIp; use conduwuit::{ - Err, Error, Result, debug, - debug::INFO_SPAN_LEVEL, - debug_warn, err, error, + Err, Error, Result, debug, debug_warn, err, error, result::LogErr, trace, utils::{ @@ -48,7 +46,7 @@ type Pdu = (OwnedRoomId, OwnedEventId, CanonicalJsonObject); /// Push EDUs and PDUs to this server. #[tracing::instrument( name = "txn", - level = INFO_SPAN_LEVEL, + level = "debug", skip_all, fields( %client, @@ -83,8 +81,8 @@ pub(crate) async fn send_transaction_message_route( pdus = body.pdus.len(), edus = body.edus.len(), elapsed = ?txn_start_time.elapsed(), - id = ?body.transaction_id, - origin =?body.origin(), + id = %body.transaction_id, + origin = %body.origin(), "Starting txn", ); @@ -110,8 +108,8 @@ pub(crate) async fn send_transaction_message_route( pdus = body.pdus.len(), edus = body.edus.len(), elapsed = ?txn_start_time.elapsed(), - id = ?body.transaction_id, - origin =?body.origin(), + id = %body.transaction_id, + origin = %body.origin(), "Finished txn", ); for (id, result) in &results { diff --git a/src/api/server/send_join.rs b/src/api/server/send_join.rs index d92581a1..f80ac8fe 100644 --- a/src/api/server/send_join.rs +++ b/src/api/server/send_join.rs @@ -26,7 +26,7 @@ use serde_json::value::{RawValue as RawJsonValue, to_raw_value}; use crate::Ruma; /// helper method for /send_join v1 and v2 -#[tracing::instrument(skip(services, pdu, omit_members), fields(room_id = room_id.as_str(), origin = origin.as_str()))] +#[tracing::instrument(skip(services, pdu, omit_members), fields(room_id = room_id.as_str(), origin = origin.as_str()), level = "info")] async fn create_join_event( services: &Services, origin: &ServerName, diff --git a/src/core/alloc/je.rs b/src/core/alloc/je.rs index 77deebc5..7ec7d1f9 100644 --- a/src/core/alloc/je.rs +++ b/src/core/alloc/je.rs @@ -340,7 +340,7 @@ where #[tracing::instrument( name = "get", - level = "trace" + level = "trace", skip_all, fields(?key) )] @@ -357,7 +357,7 @@ where #[tracing::instrument( name = "xchg", - level = "trace" + level = "trace", skip_all, fields(?key, ?val) )] diff --git a/src/core/config/manager.rs b/src/core/config/manager.rs index e55916ba..d9b26225 100644 --- a/src/core/config/manager.rs +++ b/src/core/config/manager.rs @@ -59,7 +59,7 @@ impl Deref for Manager { /// Update the active configuration, returning prior configuration. #[implement(Manager)] -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub fn update(&self, config: Config) -> Result> { let config = Arc::new(config); let new = Arc::into_raw(config); diff --git a/src/core/matrix/state_res/event_auth.rs b/src/core/matrix/state_res/event_auth.rs index da3a0898..24f03162 100644 --- a/src/core/matrix/state_res/event_auth.rs +++ b/src/core/matrix/state_res/event_auth.rs @@ -532,8 +532,8 @@ where if sender_power_level < invite_level { warn!( %sender, - has=?sender_power_level, - required=?invite_level, + has=%sender_power_level, + required=%invite_level, "sender cannot send invites in this room" ); return Ok(false); @@ -605,8 +605,8 @@ where if !check_redaction(room_version, incoming_event, sender_power_level, redact_level)? { warn!( %sender, - ?sender_power_level, - ?redact_level, + %sender_power_level, + %redact_level, "redaction event was not allowed" ); return Ok(false); @@ -772,11 +772,12 @@ where power_levels_event.as_ref().is_some(), ) || auth_user_pl >= invite_level; trace!( - auth_user_pl=?auth_user_pl, - invite_level=?invite_level, - user_joined=?user_joined, - okay_power=?okay_power, - passing=?(user_joined && okay_power), + %auth_user_pl, + %auth_user_pl, + %invite_level, + %user_joined, + %okay_power, + passing=%(user_joined && okay_power), "user for join auth is valid check details" ); user_joined && okay_power @@ -1211,7 +1212,7 @@ fn can_send_event(event: &impl Event, ple: Option<&impl Event>, user_level: Int) { warn!( %user_level, - required=?event_type_power_level, + required=%event_type_power_level, state_key=?event.state_key(), sender=%event.sender(), "state_key starts with @ but does not match sender", diff --git a/src/database/engine/backup.rs b/src/database/engine/backup.rs index 4cdb6172..03413bd4 100644 --- a/src/database/engine/backup.rs +++ b/src/database/engine/backup.rs @@ -7,7 +7,7 @@ use super::Engine; use crate::util::map_err; #[implement(Engine)] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "info")] pub fn backup(&self) -> Result { let mut engine = self.backup_engine()?; let config = &self.ctx.server.config; diff --git a/src/database/engine/logger.rs b/src/database/engine/logger.rs index 23e23fc7..ffdfe91b 100644 --- a/src/database/engine/logger.rs +++ b/src/database/engine/logger.rs @@ -4,7 +4,7 @@ use rocksdb::LogLevel; #[tracing::instrument( parent = None, name = "rocksdb", - level = "trace" + level = "trace", skip(msg), )] pub(crate) fn handle(level: LogLevel, msg: &str) { diff --git a/src/database/engine/open.rs b/src/database/engine/open.rs index 7b9d93c2..6fc1a281 100644 --- a/src/database/engine/open.rs +++ b/src/database/engine/open.rs @@ -17,7 +17,7 @@ use super::{ use crate::{Context, or_else}; #[implement(Engine)] -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub(crate) async fn open(ctx: Arc, desc: &[Descriptor]) -> Result> { let server = &ctx.server; let config = &server.config; @@ -63,7 +63,7 @@ pub(crate) async fn open(ctx: Arc, desc: &[Descriptor]) -> Result, db_opts: &Options, @@ -119,7 +119,7 @@ fn configure_cfds( } #[implement(Engine)] -#[tracing::instrument(name = "discover", skip_all)] +#[tracing::instrument(name = "discover", skip_all, level = "debug")] fn discover_cfs(path: &Path, opts: &Options) -> BTreeSet { Db::list_cf(opts, path) .unwrap_or_default() diff --git a/src/database/map/compact.rs b/src/database/map/compact.rs index b49bf30b..a4c0add0 100644 --- a/src/database/map/compact.rs +++ b/src/database/map/compact.rs @@ -26,7 +26,7 @@ pub struct Options { #[implement(super::Map)] #[tracing::instrument( name = "compact", - level = "info" + level = "info", skip(self), fields(%self), )] diff --git a/src/database/pool.rs b/src/database/pool.rs index 61b657ed..b00fd0ef 100644 --- a/src/database/pool.rs +++ b/src/database/pool.rs @@ -113,7 +113,7 @@ impl Drop for Pool { } #[implement(Pool)] -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "debug")] pub(crate) fn close(&self) { let workers = take(&mut *self.workers.lock()); @@ -147,8 +147,8 @@ pub(crate) fn close(&self) { .map(|result| result.map_err(Error::from_panic)) .enumerate() .for_each(|(id, result)| match result { - | Ok(()) => trace!(?id, "worker joined"), - | Err(error) => error!(?id, "worker joined with error: {error}"), + | Ok(()) => trace!(%id, "worker joined"), + | Err(error) => error!(%id, "worker joined with error: {error}"), }); } @@ -297,7 +297,7 @@ fn worker_init(&self, id: usize) { } debug!( - ?group, + %group, affinity = ?affinity.collect::>(), "worker ready" ); diff --git a/src/database/pool/configure.rs b/src/database/pool/configure.rs index 92dda56e..d1799123 100644 --- a/src/database/pool/configure.rs +++ b/src/database/pool/configure.rs @@ -105,8 +105,8 @@ pub(super) fn configure(server: &Arc) -> (usize, Vec, Vec) .unwrap_or("None"), ?worker_counts, ?queue_sizes, - ?total_workers, - stream_width = ?stream::automatic_width(), + %total_workers, + stream_width = %stream::automatic_width(), "Frontend topology", ); @@ -139,13 +139,13 @@ fn update_stream_width(server: &Arc, num_queues: usize, total_workers: u let (old_width, new_width) = stream::set_width(req_width); let (old_amp, new_amp) = stream::set_amplification(req_amp); debug!( - scale = ?config.stream_width_scale, - ?num_queues, - ?req_width, - ?old_width, - ?new_width, - ?old_amp, - ?new_amp, + scale = %config.stream_width_scale, + %num_queues, + %req_width, + %old_width, + %new_width, + %old_amp, + %new_amp, "Updated global stream width" ); } diff --git a/src/main/logging.rs b/src/main/logging.rs index 0f76dbc2..64f26bb0 100644 --- a/src/main/logging.rs +++ b/src/main/logging.rs @@ -6,6 +6,7 @@ use conduwuit_core::{ debug_warn, err, log::{ConsoleFormat, ConsoleWriter, LogLevelReloadHandles, capture, fmt_span}, result::UnwrapOrErr, + warn, }; #[cfg(feature = "otlp_telemetry")] use opentelemetry::trace::TracerProvider; @@ -85,7 +86,7 @@ pub(crate) fn init( let exporter = match config.otlp_protocol.as_str() { | "grpc" => opentelemetry_otlp::SpanExporter::builder() .with_tonic() - .with_protocol(opentelemetry_otlp::Protocol::Grpc) + .with_protocol(opentelemetry_otlp::Protocol::Grpc) // TODO: build from env when 0.32 is released .build() .expect("Failed to create OTLP gRPC exporter"), | "http" => opentelemetry_otlp::SpanExporter::builder() @@ -93,7 +94,7 @@ pub(crate) fn init( .build() .expect("Failed to create OTLP HTTP exporter"), | protocol => { - debug_warn!( + warn!( "Invalid OTLP protocol '{}', falling back to HTTP. Valid options are \ 'http' or 'grpc'.", protocol diff --git a/src/main/mod.rs b/src/main/mod.rs index ba59549c..b5d401a7 100644 --- a/src/main/mod.rs +++ b/src/main/mod.rs @@ -50,7 +50,8 @@ pub fn run_with_args(args: &Args) -> Result<()> { #[tracing::instrument( name = "main", parent = None, - skip_all + skip_all, + level = "info" )] async fn async_main(server: &Arc) -> Result<(), Error> { extern crate conduwuit_router as router; diff --git a/src/main/signal.rs b/src/main/signal.rs index a5d07774..42cade13 100644 --- a/src/main/signal.rs +++ b/src/main/signal.rs @@ -6,7 +6,7 @@ use tokio::signal; use super::server::Server; #[cfg(unix)] -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub(super) async fn signal(server: Arc) { use signal::unix; use unix::SignalKind; @@ -39,13 +39,13 @@ pub(super) async fn signal(server: Arc) { }; if let Err(e) = result { - debug_error!(?sig, "signal: {e}"); + debug_error!(%sig, "signal: {e}"); } } } #[cfg(not(unix))] -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub(super) async fn signal(server: Arc) { loop { tokio::select! { diff --git a/src/router/request.rs b/src/router/request.rs index 3bbeae03..0d1b7946 100644 --- a/src/router/request.rs +++ b/src/router/request.rs @@ -102,13 +102,13 @@ fn handle_result(method: &Method, uri: &Uri, result: Response) -> Result) -> Result<()> { let server = &services.server; debug!("Start"); @@ -58,7 +58,7 @@ pub(crate) async fn run(services: Arc) -> Result<()> { } /// Async initializations -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub(crate) async fn start(server: Arc) -> Result> { debug!("Starting..."); @@ -73,7 +73,7 @@ pub(crate) async fn start(server: Arc) -> Result> { } /// Async destructions -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] pub(crate) async fn stop(services: Arc) -> Result<()> { debug!("Shutting down..."); @@ -108,7 +108,7 @@ pub(crate) async fn stop(services: Arc) -> Result<()> { Ok(()) } -#[tracing::instrument(skip_all)] +#[tracing::instrument(skip_all, level = "info")] async fn signal(server: Arc, tx: Sender<()>, handle: axum_server::Handle) { server .clone() @@ -126,7 +126,7 @@ async fn handle_shutdown(server: Arc, tx: Sender<()>, handle: axum_serve let timeout = Duration::from_secs(timeout); debug!( ?timeout, - handle_active = ?server.metrics.requests_handle_active.load(Ordering::Relaxed), + handle_active = %server.metrics.requests_handle_active.load(Ordering::Relaxed), "Notifying for graceful shutdown" ); diff --git a/src/service/admin/grant.rs b/src/service/admin/grant.rs index 35d8f93c..ba3d16b6 100644 --- a/src/service/admin/grant.rs +++ b/src/service/admin/grant.rs @@ -122,7 +122,7 @@ pub async fn make_user_admin(&self, user_id: &UserId) -> Result { let room_tag = self.services.server.config.admin_room_tag.as_str(); if !room_tag.is_empty() { if let Err(e) = self.set_room_tag(&room_id, user_id, room_tag).await { - error!(?room_id, ?user_id, ?room_tag, "Failed to set tag for admin grant: {e}"); + error!(%room_id, %user_id, %room_tag, "Failed to set tag for admin grant: {e}"); } } diff --git a/src/service/announcements/mod.rs b/src/service/announcements/mod.rs index 2a70344d..7f3714b6 100644 --- a/src/service/announcements/mod.rs +++ b/src/service/announcements/mod.rs @@ -96,7 +96,7 @@ impl crate::Service for Service { } if let Err(e) = self.check().await { - warn!(%e, "Failed to check for announcements"); + warn!(?e, "Failed to check for announcements"); } } diff --git a/src/service/federation/execute.rs b/src/service/federation/execute.rs index 1d1d1154..1126fc56 100644 --- a/src/service/federation/execute.rs +++ b/src/service/federation/execute.rs @@ -88,7 +88,7 @@ where let url = request.url().clone(); let method = request.method().clone(); - debug!(?method, ?url, "Sending request"); + debug!(%method, %url, "Sending request"); match client.execute(request).await { | Ok(response) => handle_response::(dest, actual, &method, &url, response).await, | Err(error) => @@ -144,9 +144,9 @@ async fn into_http_response( ) -> Result> { let status = response.status(); trace!( - ?status, ?method, - request_url = ?url, - response_url = ?response.url(), + %status, %method, + request_url = %url, + response_url = %response.url(), "Received response from {}", actual.string(), ); @@ -196,9 +196,9 @@ fn handle_error( debug_warn!("{e:?}"); } else if e.is_redirect() { debug_error!( - method = ?method, - url = ?url, - final_url = ?e.url(), + %method, + %url, + final_url = e.url().map(tracing::field::display), "Redirect loop {}: {}", actual.host, e, diff --git a/src/service/media/data.rs b/src/service/media/data.rs index 0ccd844f..a5d667ee 100644 --- a/src/service/media/data.rs +++ b/src/service/media/data.rs @@ -124,16 +124,16 @@ impl Data { .next() .map(string_from_bytes) .transpose() - .map_err(|e| err!(Database(error!(?mxc, "Content-type is invalid: {e}"))))?; + .map_err(|e| err!(Database(error!(%mxc, "Content-type is invalid: {e}"))))?; let content_disposition = parts .next() .map(Some) - .ok_or_else(|| err!(Database(error!(?mxc, "Media ID in db is invalid."))))? + .ok_or_else(|| err!(Database(error!(%mxc, "Media ID in db is invalid."))))? .filter(|bytes| !bytes.is_empty()) .map(string_from_bytes) .transpose() - .map_err(|e| err!(Database(error!(?mxc, "Content-type is invalid: {e}"))))? + .map_err(|e| err!(Database(error!(%mxc, "Content-type is invalid: {e}"))))? .as_deref() .map(str::parse) .transpose()?; diff --git a/src/service/media/mod.rs b/src/service/media/mod.rs index aea52cea..0b3d0c7d 100644 --- a/src/service/media/mod.rs +++ b/src/service/media/mod.rs @@ -118,14 +118,14 @@ impl Service { match self.db.search_mxc_metadata_prefix(mxc).await { | Ok(keys) => { for key in keys { - trace!(?mxc, "MXC Key: {key:?}"); - debug_info!(?mxc, "Deleting from filesystem"); + trace!(%mxc, "MXC Key: {key:?}"); + debug_info!(%mxc, "Deleting from filesystem"); if let Err(e) = self.remove_media_file(&key).await { - debug_error!(?mxc, "Failed to remove media file: {e}"); + debug_error!(%mxc, "Failed to remove media file: {e}"); } - debug_info!(?mxc, "Deleting from database"); + debug_info!(%mxc, "Deleting from database"); self.db.delete_file_mxc(mxc).await; } @@ -148,7 +148,7 @@ impl Service { for mxc in mxcs { let Ok(mxc) = mxc.as_str().try_into().inspect_err(|e| { - debug_error!(?mxc, "Failed to parse MXC URI from database: {e}"); + debug_error!(%mxc, "Failed to parse MXC URI from database: {e}"); }) else { continue; }; @@ -210,7 +210,7 @@ impl Service { let Some(mxc_s) = mxc else { debug_warn!( - ?mxc, + mxc, "Parsed MXC URL unicode bytes from database but is still invalid" ); continue; @@ -256,7 +256,7 @@ impl Service { let Some(mxc_s) = mxc else { debug_warn!( - ?mxc, + mxc, "Parsed MXC URL unicode bytes from database but is still invalid" ); continue; diff --git a/src/service/media/preview.rs b/src/service/media/preview.rs index 91660a58..662b2804 100644 --- a/src/service/media/preview.rs +++ b/src/service/media/preview.rs @@ -71,10 +71,10 @@ async fn request_url_preview(&self, url: &Url) -> Result { let client = &self.services.client.url_preview; let response = client.head(url.as_str()).send().await?; - debug!(?url, "URL preview response headers: {:?}", response.headers()); + debug!(%url, "URL preview response headers: {:?}", response.headers()); if let Some(remote_addr) = response.remote_addr() { - debug!(?url, "URL preview response remote address: {:?}", remote_addr); + debug!(%url, "URL preview response remote address: {:?}", remote_addr); if let Ok(ip) = IPAddress::parse(remote_addr.ip().to_string()) { if !self.services.client.valid_cidr_range(&ip) { diff --git a/src/service/media/remote.rs b/src/service/media/remote.rs index f234fa13..9668311c 100644 --- a/src/service/media/remote.rs +++ b/src/service/media/remote.rs @@ -247,7 +247,7 @@ async fn handle_location( ) -> Result { self.location_request(location).await.map_err(|error| { err!(Request(NotFound( - debug_warn!(%mxc, ?user, ?location, ?error, "Fetching media from location failed") + debug_warn!(%mxc, user = user.map(tracing::field::display), ?location, ?error, "Fetching media from location failed") ))) }) } @@ -320,7 +320,7 @@ fn handle_federation_error( ) -> Error { let fallback = || { err!(Request(NotFound( - debug_error!(%mxc, ?user, ?server, ?error, "Remote media not found") + debug_error!(%mxc, user = user.map(tracing::field::display), server = server.map(tracing::field::display), ?error, "Remote media not found") ))) }; diff --git a/src/service/media/thumbnail.rs b/src/service/media/thumbnail.rs index e5a98774..fa29e4b8 100644 --- a/src/service/media/thumbnail.rs +++ b/src/service/media/thumbnail.rs @@ -120,7 +120,7 @@ async fn get_thumbnail_generate( let mut cursor = std::io::Cursor::new(&mut thumbnail_bytes); thumbnail .write_to(&mut cursor, image::ImageFormat::Png) - .map_err(|error| err!(error!(?error, "Error writing PNG thumbnail.")))?; + .map_err(|error| err!(error!(%error, "Error writing PNG thumbnail.")))?; // Save thumbnail in database so we don't have to generate it again next time let thumbnail_key = self.db.create_file_metadata( diff --git a/src/service/migrations.rs b/src/service/migrations.rs index f10db666..332de99d 100644 --- a/src/service/migrations.rs +++ b/src/service/migrations.rs @@ -677,7 +677,7 @@ async fn populate_userroomid_leftstate_table(services: &Services) -> Result { shortstatehash_cache.insert(room_id.to_owned(), shortstatehash); shortstatehash } else { - warn!(?room_id, ?user_id, "room has no shortstatehash"); + warn!(%room_id, %user_id, "room has no shortstatehash"); return Ok((total, fixed, shortstatehash_cache)); }; @@ -698,8 +698,8 @@ async fn populate_userroomid_leftstate_table(services: &Services) -> Result { }, | Err(_) => { warn!( - ?room_id, - ?user_id, + %room_id, + %user_id, "room cached as left has no leave event for user, removing \ cache entry" ); diff --git a/src/service/presence/mod.rs b/src/service/presence/mod.rs index e7ce64bc..8eca7ab9 100644 --- a/src/service/presence/mod.rs +++ b/src/service/presence/mod.rs @@ -198,11 +198,11 @@ impl Service { presence.presence, PresenceState::Unavailable | PresenceState::Online | PresenceState::Busy ) { - trace!(?user_id, ?presence, "Skipping user"); + trace!(%user_id, ?presence, "Skipping user"); continue; } - trace!(?user_id, ?presence, "Resetting presence to offline"); + trace!(%user_id, ?presence, "Resetting presence to offline"); _ = self .set_presence( diff --git a/src/service/rooms/auth_chain/mod.rs b/src/service/rooms/auth_chain/mod.rs index 28669848..dfcb1362 100644 --- a/src/service/rooms/auth_chain/mod.rs +++ b/src/service/rooms/auth_chain/mod.rs @@ -151,7 +151,7 @@ async fn get_auth_chain_outer( let auth_chain = self.get_auth_chain_inner(room_id, event_id).await?; self.cache_auth_chain_vec(vec![shortid], auth_chain.as_slice()); debug!( - ?event_id, + %event_id, elapsed = ?started.elapsed(), "Cache missed event" ); @@ -188,18 +188,18 @@ async fn get_auth_chain_inner( let mut found = HashSet::new(); while let Some(event_id) = todo.pop_front() { - trace!(?event_id, "processing auth event"); + trace!(%event_id, "processing auth event"); match self.services.timeline.get_pdu(&event_id).await { | Err(e) => { - debug_error!(?event_id, ?e, "Could not find pdu mentioned in auth events"); + debug_error!(%event_id, ?e, "Could not find pdu mentioned in auth events"); }, | Ok(pdu) => { if let Some(claimed_room_id) = pdu.room_id.clone() { if claimed_room_id != *room_id { return Err!(Request(Forbidden(error!( - ?event_id, - ?room_id, + %event_id, + %room_id, wrong_room_id = ?pdu.room_id.unwrap(), "auth event for incorrect room" )))); @@ -214,7 +214,7 @@ async fn get_auth_chain_inner( .await; if found.insert(sauthevent) { - trace!(?event_id, ?auth_event, "adding auth event to processing queue"); + trace!(%event_id, ?auth_event, "adding auth event to processing queue"); todo.push_back(auth_event.clone()); } diff --git a/src/service/rooms/event_handler/mod.rs b/src/service/rooms/event_handler/mod.rs index c9de1419..4cf39527 100644 --- a/src/service/rooms/event_handler/mod.rs +++ b/src/service/rooms/event_handler/mod.rs @@ -104,9 +104,9 @@ fn check_room_id(room_id: &RoomId, pdu: &Pdu) -> Result { .is_some_and(|claimed_room_id| claimed_room_id != room_id) { return Err!(Request(InvalidParam(error!( - pdu_event_id = ?pdu.event_id(), - pdu_room_id = ?pdu.room_id(), - ?room_id, + pdu_event_id = %pdu.event_id(), + pdu_room_id = pdu.room_id().map(tracing::field::display), + %room_id, "Found event from room in room", )))); } diff --git a/src/service/rooms/event_handler/policy_server.rs b/src/service/rooms/event_handler/policy_server.rs index e6e1609f..679109ad 100644 --- a/src/service/rooms/event_handler/policy_server.rs +++ b/src/service/rooms/event_handler/policy_server.rs @@ -31,7 +31,7 @@ use serde_json::value::RawValue; /// contacted for whatever reason, Err(e) is returned, which generally is a /// fail-open operation. #[implement(super::Service)] -#[tracing::instrument(skip(self, pdu, pdu_json, room_id))] +#[tracing::instrument(skip(self, pdu, pdu_json, room_id), level = "info")] pub async fn ask_policy_server( &self, pdu: &PduEvent, @@ -184,7 +184,7 @@ pub async fn ask_policy_server( /// Asks a remote policy server for a signature on this event. /// If the policy server signs this event, the original data is mutated. #[implement(super::Service)] -#[tracing::instrument(skip_all, fields(event_id=%pdu.event_id(), via=%via))] +#[tracing::instrument(skip_all, fields(event_id=%pdu.event_id(), via=%via), level = "info")] pub async fn fetch_policy_server_signature( &self, pdu: &PduEvent, diff --git a/src/service/rooms/timeline/redact.rs b/src/service/rooms/timeline/redact.rs index 9d41e986..b3aff9ec 100644 --- a/src/service/rooms/timeline/redact.rs +++ b/src/service/rooms/timeline/redact.rs @@ -28,7 +28,7 @@ pub async fn redact_pdu( .await .map(Event::into_pdu) .map_err(|e| { - err!(Database(error!(?pdu_id, ?event_id, ?e, "PDU ID points to invalid PDU."))) + err!(Database(error!(?pdu_id, %event_id, ?e, "PDU ID points to invalid PDU."))) })?; if let Ok(content) = pdu.get_content::() { @@ -48,7 +48,7 @@ pub async fn redact_pdu( pdu.redact(&room_version_id, reason.to_value())?; let obj = utils::to_canonical_object(&pdu).map_err(|e| { - err!(Database(error!(?event_id, ?e, "Failed to convert PDU to canonical JSON"))) + err!(Database(error!(%event_id, ?e, "Failed to convert PDU to canonical JSON"))) })?; self.replace_pdu(&pdu_id, &obj).await diff --git a/src/service/sending/sender.rs b/src/service/sending/sender.rs index 1b5d734e..86e0cd7d 100644 --- a/src/service/sending/sender.rs +++ b/src/service/sending/sender.rs @@ -535,12 +535,12 @@ impl Service { } let Ok(event) = serde_json::from_str(read_receipt.json().get()) else { - error!(?user_id, ?count, ?read_receipt, "Invalid edu event in read_receipts."); + error!(%user_id, %count, ?read_receipt, "Invalid edu event in read_receipts."); continue; }; let AnySyncEphemeralRoomEvent::Receipt(r) = event else { - error!(?user_id, ?count, ?event, "Invalid event type in read_receipts"); + error!(%user_id, %count, ?event, "Invalid event type in read_receipts"); continue; }; @@ -755,7 +755,7 @@ impl Service { let Ok(pusher) = self.services.pusher.get_pusher(&user_id, &pushkey).await else { return Err(( Destination::Push(user_id.clone(), pushkey.clone()), - err!(Database(error!(?user_id, ?pushkey, "Missing pusher"))), + err!(Database(error!(%user_id, ?pushkey, "Missing pusher"))), )); }; diff --git a/src/service/server_keys/acquire.rs b/src/service/server_keys/acquire.rs index 64b936b6..7477bdd7 100644 --- a/src/service/server_keys/acquire.rs +++ b/src/service/server_keys/acquire.rs @@ -118,7 +118,7 @@ where } for (server, key_ids) in missing { - debug_warn!(?server, ?key_ids, "missing"); + debug_warn!(%server, ?key_ids, "missing"); } } @@ -174,8 +174,8 @@ async fn acquire_origin( timeout: Instant, ) -> (OwnedServerName, Vec) { match timeout_at(timeout, self.server_request(&origin)).await { - | Err(e) => debug_warn!(?origin, "timed out: {e}"), - | Ok(Err(e)) => debug_error!(?origin, "{e}"), + | Err(e) => debug_warn!(%origin, "timed out: {e}"), + | Ok(Err(e)) => debug_error!(%origin, "{e}"), | Ok(Ok(server_keys)) => { trace!( %origin, diff --git a/src/service/server_keys/get.rs b/src/service/server_keys/get.rs index e2f742a5..1c750a43 100644 --- a/src/service/server_keys/get.rs +++ b/src/service/server_keys/get.rs @@ -63,7 +63,7 @@ where } #[implement(super::Service)] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "debug")] pub async fn get_verify_key( &self, origin: &ServerName, @@ -96,8 +96,8 @@ pub async fn get_verify_key( } Err!(BadServerResponse(debug_error!( - ?key_id, - ?origin, + %key_id, + %origin, "Failed to fetch federation signing-key" ))) } diff --git a/src/service/server_keys/mod.rs b/src/service/server_keys/mod.rs index f99cf711..07cb0b0d 100644 --- a/src/service/server_keys/mod.rs +++ b/src/service/server_keys/mod.rs @@ -112,7 +112,7 @@ async fn add_signing_keys(&self, new_keys: ServerSigningKeys) { } #[implement(Service)] -#[tracing::instrument(skip(self, object))] +#[tracing::instrument(skip(self, object), level = "debug")] pub async fn required_keys_exist( &self, object: &CanonicalJsonObject, @@ -135,7 +135,7 @@ pub async fn required_keys_exist( } #[implement(Service)] -#[tracing::instrument(skip(self))] +#[tracing::instrument(skip(self), level = "debug")] pub async fn verify_key_exists(&self, origin: &ServerName, key_id: &ServerSigningKeyId) -> bool { type KeysMap<'a> = BTreeMap<&'a ServerSigningKeyId, &'a RawJsonValue>; diff --git a/src/service/users/mod.rs b/src/service/users/mod.rs index 46edec6f..eed00f96 100644 --- a/src/service/users/mod.rs +++ b/src/service/users/mod.rs @@ -494,8 +494,8 @@ impl Service { let key = (user_id, device_id); if self.db.userdeviceid_metadata.qry(&key).await.is_err() { return Err!(Database(error!( - ?user_id, - ?device_id, + %user_id, + %device_id, "User does not exist or device has no metadata." ))); } @@ -539,8 +539,8 @@ impl Service { let key = (user_id, device_id); if self.db.userdeviceid_metadata.qry(&key).await.is_err() { return Err!(Database(error!( - ?user_id, - ?device_id, + %user_id, + %device_id, "User does not exist or device has no metadata." ))); } @@ -1153,7 +1153,7 @@ impl Service { let (expires_at, user_id): (u64, OwnedUserId) = value.deserialized()?; if expires_at < utils::millis_since_unix_epoch() { - trace!(?user_id, ?token, "Removing expired login token"); + trace!(%user_id, ?token, "Removing expired login token"); self.db.logintoken_expiresatuserid.remove(token); @@ -1231,7 +1231,7 @@ impl Service { debug!(?uri, "LDAP creating connection..."); let (conn, mut ldap) = LdapConnAsync::new(uri.as_str()) .await - .map_err(|e| err!(Ldap(error!(?user_id, "LDAP connection setup error: {e}"))))?; + .map_err(|e| err!(Ldap(error!(%user_id, "LDAP connection setup error: {e}"))))?; let driver = self.services.server.runtime().spawn(async move { match conn.drive().await {