diff --git a/Cargo.lock b/Cargo.lock
index d3aad4f..c85adf9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -362,7 +362,7 @@ dependencies = [
[[package]]
name = "biliup-cli"
-version = "1.1.26"
+version = "1.1.27"
dependencies = [
"async-channel",
"async-trait",
@@ -3693,7 +3693,7 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "stream-gears"
-version = "1.1.26"
+version = "1.1.27"
dependencies = [
"async-channel",
"async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index 09bc53a..c7e4b1f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,7 +7,7 @@ members = [
resolver = "3"
[workspace.package]
-version = "1.1.26"
+version = "1.1.27"
[workspace.dependencies]
serde = { version = "1.0", features = ["derive"] }
diff --git a/app/ui/plugins/developer.tsx b/app/ui/plugins/developer.tsx
index d750932..0cfac82 100644
--- a/app/ui/plugins/developer.tsx
+++ b/app/ui/plugins/developer.tsx
@@ -40,7 +40,7 @@ const Developer: React.FC = () => {
{
alignSelf: 'stretch',
padding: 0,
}}
- onChange={() => {
+ onChange={(value) => {
formApi.setValue('LOGGING.root.handlers', ['console'])
+ formApi.setValue('LOGGING.loggers.biliup.handlers', ['file'])
+ formApi.setValue('LOGGING.loggers.biliup.level', value)
}}
showClear={true}
>
@@ -60,8 +62,8 @@ const Developer: React.FC = () => {
CRITICAL
{
padding: 0,
}}
onChange={() => {
- formApi.setValue('LOGGING.loggers.biliup.handlers', ['file'])
}}
showClear={true}
>
diff --git a/crates/biliup-cli/src/server/api/endpoints.rs b/crates/biliup-cli/src/server/api/endpoints.rs
index ba894d2..43fb392 100644
--- a/crates/biliup-cli/src/server/api/endpoints.rs
+++ b/crates/biliup-cli/src/server/api/endpoints.rs
@@ -1,4 +1,3 @@
-use crate::UploadLine;
use crate::server::common::upload::{build_studio, submit_to_bilibili, upload};
use crate::server::common::util::Recorder;
use crate::server::config::Config;
@@ -18,6 +17,7 @@ use crate::server::infrastructure::repositories::{
del_streamer, get_all_streamer, get_upload_config,
};
use crate::server::infrastructure::service_register::ServiceRegister;
+use crate::{LogHandle, UploadLine};
use axum::Json;
use axum::extract::{Path, State};
use axum::http::StatusCode;
@@ -35,6 +35,7 @@ use std::time::{Duration, UNIX_EPOCH};
use tokio::fs;
use tokio::io::AsyncWriteExt;
use tracing::info;
+use tracing_subscriber::EnvFilter;
pub async fn get_streamers_endpoint(
State(pool): State,
@@ -182,6 +183,7 @@ pub async fn get_configuration(
pub async fn put_configuration(
State(config): State>>,
State(pool): State,
+ State(log_handle): State,
Json(json_data): Json,
) -> Result, Response> {
// 将 JSON 序列化为 TEXT 存库
@@ -260,7 +262,19 @@ pub async fn put_configuration(
.change_context(AppError::Unknown)
.map_err(report_to_response)?;
*config.write().unwrap() = saved_config;
- Ok(Json(config.read().unwrap().clone()))
+ let guard = config.read().unwrap();
+ if let Some(loggers_level) = &guard.loggers_level {
+ let new_filter = EnvFilter::try_new(loggers_level)
+ .change_context(AppError::Custom(String::from("Invalid log level format")))
+ .map_err(report_to_response)?;
+
+ log_handle
+ .modify(|filter| *filter = new_filter)
+ .change_context(AppError::Unknown)
+ .map_err(report_to_response)?;
+ }
+
+ Ok(Json(guard.clone()))
}
pub async fn get_streamer_info(
diff --git a/crates/biliup-cli/src/server/config.rs b/crates/biliup-cli/src/server/config.rs
index 660d0d1..3f4faeb 100644
--- a/crates/biliup-cli/src/server/config.rs
+++ b/crates/biliup-cli/src/server/config.rs
@@ -215,6 +215,8 @@ pub struct Config {
/// 用户Cookie配置
#[serde(default)]
pub user: Option,
+
+ pub loggers_level: Option,
}
/// 主播配置结构体
diff --git a/crates/biliup-cli/src/server/infrastructure/service_register.rs b/crates/biliup-cli/src/server/infrastructure/service_register.rs
index 4916735..ef341a4 100644
--- a/crates/biliup-cli/src/server/infrastructure/service_register.rs
+++ b/crates/biliup-cli/src/server/infrastructure/service_register.rs
@@ -25,8 +25,8 @@ pub struct ServiceRegister {
pub config: Arc>,
/// HTTP客户端
pub client: StatelessClient,
- #[from_ref(skip)]
- log_handle: LogHandle,
+
+ pub log_handle: LogHandle,
}
/// 简单的服务容器,负责管理API端点通过axum扩展获取的各种服务