Skip to content

Commit d564d70

Browse files
committed
pass env filter reload handle to libsql-server lib
1 parent 87fe9cb commit d564d70

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

libsql-server/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ pub struct Server<C = HttpConnector, A = AddrIncoming, D = HttpsConnector<HttpCo
181181
pub should_sync_from_storage: bool,
182182
pub force_load_wals: bool,
183183
pub sync_conccurency: usize,
184+
pub set_log_level: Option<Box<dyn Fn(&str) -> anyhow::Result<()> + Send +'static>>
184185
}
185186

186187
impl<C, A, D> Default for Server<C, A, D> {
@@ -210,6 +211,7 @@ impl<C, A, D> Default for Server<C, A, D> {
210211
should_sync_from_storage: false,
211212
force_load_wals: false,
212213
sync_conccurency: 8,
214+
set_log_level: None,
213215
}
214216
}
215217
}

libsql-server/src/main.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::env;
22
use std::net::SocketAddr;
33
use std::path::PathBuf;
4+
use std::str::FromStr;
45
use std::sync::Arc;
56

67
use anyhow::{bail, Context as _, Result};
@@ -10,7 +11,7 @@ use hyper::client::HttpConnector;
1011
use libsql_server::auth::{parse_http_basic_auth_arg, parse_jwt_keys, user_auth_strategies, Auth};
1112
use tokio::sync::Notify;
1213
use tokio::time::Duration;
13-
use tracing_subscriber::prelude::*;
14+
use tracing_subscriber::{prelude::*, EnvFilter};
1415
use tracing_subscriber::util::SubscriberInitExt;
1516
use tracing_subscriber::Layer;
1617

@@ -641,7 +642,7 @@ fn make_meta_store_config(config: &Cli) -> anyhow::Result<MetaStoreConfig> {
641642
})
642643
}
643644

644-
async fn build_server(config: &Cli) -> anyhow::Result<Server> {
645+
async fn build_server(config: &Cli, set_log_level: impl Fn(&str) -> anyhow::Result<()> + Send + 'static) -> anyhow::Result<Server> {
645646
let db_config = make_db_config(config)?;
646647
let user_api_config = make_user_api_config(config).await?;
647648
let admin_api_config = make_admin_api_config(config).await?;
@@ -709,6 +710,7 @@ async fn build_server(config: &Cli) -> anyhow::Result<Server> {
709710
should_sync_from_storage: config.sync_from_storage,
710711
force_load_wals: config.force_load_wals,
711712
sync_conccurency: config.sync_conccurency,
713+
set_log_level: Some(Box::new(set_log_level)),
712714
})
713715
}
714716

@@ -748,16 +750,23 @@ async fn main() -> Result<()> {
748750
#[cfg(feature = "debug-tools")]
749751
enable_libsql_logging();
750752

753+
let (filter, reload_handle) = tracing_subscriber::reload::Layer::new(tracing_subscriber::EnvFilter::from_default_env());
754+
let set_log_level = move |s: &str| -> anyhow::Result<()> {
755+
let filter = EnvFilter::from_str(s)?;
756+
reload_handle.reload(filter)?;
757+
Ok(())
758+
};
759+
751760
registry
752761
.with(
753762
tracing_subscriber::fmt::layer()
754763
.with_ansi(false)
755-
.with_filter(tracing_subscriber::EnvFilter::from_default_env()),
764+
.with_filter(filter),
756765
)
757766
.init();
758767

759768
args.print_welcome_message();
760-
let server = build_server(&args).await?;
769+
let server = build_server(&args, set_log_level).await?;
761770
server.start().await?;
762771

763772
Ok(())

0 commit comments

Comments
 (0)