feat: Move change-log-level to server

This commit is contained in:
timedout committed 2026-11-01 05:09:14 +00:00
1 parent 7577c9f001
commit 0e5c7cc640
5 files changed
+52 -83

No files matched your search

+2 -66
View File
@@ -1,8 +1,7 @@
use std::{collections::HashMap, time::SystemTime};
use std::collections::HashMap;
use conduwuit::{
Err, Result,
utils,
utils::{
stream::{IterStream, ReadyExt},
string::EMPTY,
@@ -14,10 +13,7 @@ use resolvematrix::{
resolution::ResolvedDestination,
server::{MatrixResolver, MatrixResolverBuilder},
};
use ruma::{
OwnedRoomId, OwnedServerName,
};
use tracing_subscriber::EnvFilter;
use ruma::{OwnedRoomId, OwnedServerName};
use crate::PAGE_SIZE;
@@ -27,59 +23,6 @@ impl crate::Context<'_> {
self.write_str(&message).await
}
pub(super) async fn change_log_level(&self, filter: Option<String>, reset: bool) -> Result {
let handles = &["console"];
if reset {
let old_filter_layer = match EnvFilter::try_new(&self.services.server.config.log) {
| Ok(s) => s,
| Err(e) => return Err!("Log level from config appears to be invalid now: {e}"),
};
match self
.services
.server
.log
.reload
.reload(&old_filter_layer, Some(handles))
{
| Err(e) => {
return Err!("Failed to modify and reload the global tracing log level: {e}");
},
| Ok(()) => {
let value = &self.services.server.config.log;
let out =
format!("Successfully changed log level back to config value {value}");
return self.write_str(&out).await;
},
}
}
if let Some(filter) = filter {
let new_filter_layer = match EnvFilter::try_new(filter) {
| Ok(s) => s,
| Err(e) => return Err!("Invalid log level filter specified: {e}"),
};
match self
.services
.server
.log
.reload
.reload(&new_filter_layer, Some(handles))
{
| Ok(()) => {
return self.write_str("Successfully changed log level").await;
},
| Err(e) => {
return Err!("Failed to modify and reload the global tracing log level: {e}");
},
}
}
Err!("No log level was specified.")
}
pub(super) async fn resolve_true_destination(
&self,
server_name: OwnedServerName,
@@ -182,13 +125,6 @@ impl crate::Context<'_> {
.await
}
pub(super) async fn time(&self) -> Result {
let now = SystemTime::now();
let now = utils::time::format(now, "%+");
self.write_str(&now).await
}
pub(super) async fn database_stats(
&self,
property: Option<String>,
+1 -13
View File
@@ -3,7 +3,7 @@ pub(crate) mod tester;
use clap::Subcommand;
use conduwuit::Result;
use ruma::{OwnedEventId, OwnedServerName};
use ruma::OwnedServerName;
use self::tester::TesterCommand;
use crate::admin_command_dispatch;
@@ -16,18 +16,6 @@ pub enum DebugCommand {
message: Vec<String>,
},
/// Change tracing log level/filter on the fly
///
/// This accepts the same format as the `log` config option.
ChangeLogLevel {
/// Log level/filter
filter: Option<String>,
/// Resets the log level/filter to the one in your config
#[arg(short, long)]
reset: bool,
},
/// Runs a server name through Continuwuity's true destination resolution
/// process
///
+35 -1
View File
@@ -1,11 +1,12 @@
use std::{fmt::Write, path::PathBuf, sync::Arc};
use conduwuit::{
Err, Result,
Err, Result, err,
utils::{stream::IterStream, time},
warn,
};
use futures::TryStreamExt;
use tracing_subscriber::EnvFilter;
impl crate::Context<'_> {
pub(super) async fn uptime(&self) -> Result {
@@ -234,4 +235,37 @@ impl crate::Context<'_> {
self.write_str(&info).await
}
pub(super) async fn change_log_level(&self, filter: Option<String>, reset: bool) -> Result {
let handles = &["console"];
if reset {
let old_filter_layer = EnvFilter::try_new(&self.services.server.config.log)
.map_err(|e| err!("Log level from config appears to be invalid now: {e}"))?;
self.services
.server
.log
.reload
.reload(&old_filter_layer, Some(handles))
.map_err(|e| {
err!("Failed to modify and reload the global tracing log level: {e}")
})?;
self.write_str("Successfully changed log level back to config value")
.await
} else {
let filter = filter.ok_or_else(|| err!("No log level was specified."))?;
let new_filter_layer = EnvFilter::try_new(filter)
.map_err(|e| err!("Invalid log level filter specified: {e}"))?;
self.services
.server
.log
.reload
.reload(&new_filter_layer, Some(handles))
.map_err(|e| {
err!("Failed to modify and reload the global tracing log level: {e}")
})?;
self.write_str("Successfully changed log level back to config value")
.await
}
}
}
+12
View File
@@ -58,4 +58,16 @@ pub enum ServerCommand {
/// Build information
BuildInfo,
/// Change tracing log level/filter on the fly
///
/// This accepts the same format as the `log` config option.
ChangeLogLevel {
/// Log level/filter
filter: Option<String>,
/// Resets the log level/filter to the one in your config
#[arg(short, long)]
reset: bool,
},
}
+2 -3
View File
@@ -2,9 +2,9 @@ use std::collections::BTreeMap;
use api::client::{full_user_deactivate, leave_room, recreate_push_rules_and_return};
use conduwuit::{
Err, Result, debug_warn, info,
Err, Result, info,
matrix::{Event, pdu::PartialPdu},
utils::{self, ReadyExt},
utils::{self},
warn,
};
use futures::{FutureExt, StreamExt};
@@ -25,7 +25,6 @@ use crate::{
};
const AUTO_GEN_PASSWORD_LENGTH: usize = 25;
const BULK_JOIN_REASON: &str = "Bulk force joining this room as initiated by the server admin.";
impl crate::Context<'_> {
pub(super) async fn list_users(