From 4796e6b3384b9b956ac5701c70b5f5785bb68295 Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 29 Mar 2025 14:34:54 +0100 Subject: [PATCH 01/13] yes yes and yes --- .vscode/settings.json | 3 + Cargo.lock | 12 ++++ crates/pgt_cli/Cargo.toml | 2 +- crates/pgt_cli/src/cli_options.rs | 2 + crates/pgt_cli/src/commands/daemon.rs | 62 ++++++++++++------- crates/pgt_cli/src/commands/mod.rs | 10 +++ crates/pgt_cli/src/lib.rs | 2 + crates/pgt_cli/src/logging.rs | 1 + crates/pgt_lsp/src/handlers/completions.rs | 6 +- crates/pgt_lsp/src/handlers/text_document.rs | 15 ++++- crates/pgt_lsp/src/server.rs | 15 +++-- crates/pgt_text_size/src/size.rs | 9 ++- crates/pgt_workspace/src/settings.rs | 2 +- crates/pgt_workspace/src/workspace/server.rs | 58 +++++++++-------- .../src/workspace/server/pg_query.rs | 2 +- 15 files changed, 139 insertions(+), 62 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..43994f87 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "postgrestools.bin": "./target/debug/postgrestools" +} diff --git a/Cargo.lock b/Cargo.lock index 8844e46b..ebdaa25b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2188,6 +2188,15 @@ dependencies = [ "libm", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "object" version = "0.36.5" @@ -3977,7 +3986,9 @@ checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", + "libc", "num-conv", + "num_threads", "powerfmt", "serde", "time-core", @@ -4268,6 +4279,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f459ca79f1b0d5f71c54ddfde6debfc59c8b6eeb46808ae492077f739dc7b49c" dependencies = [ "nu-ansi-term 0.50.1", + "time", "tracing-core", "tracing-log", "tracing-subscriber", diff --git a/crates/pgt_cli/Cargo.toml b/crates/pgt_cli/Cargo.toml index ca61cf65..6134a1e3 100644 --- a/crates/pgt_cli/Cargo.toml +++ b/crates/pgt_cli/Cargo.toml @@ -38,7 +38,7 @@ tokio = { workspace = true, features = ["io-std", "io-util", tracing = { workspace = true } tracing-appender = "0.2.3" tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } -tracing-tree = "0.4.0" +tracing-tree = { version = "0.4.0", features = ["time"] } [target.'cfg(unix)'.dependencies] libc = "0.2.161" diff --git a/crates/pgt_cli/src/cli_options.rs b/crates/pgt_cli/src/cli_options.rs index b795c65f..c4427be6 100644 --- a/crates/pgt_cli/src/cli_options.rs +++ b/crates/pgt_cli/src/cli_options.rs @@ -61,6 +61,7 @@ pub struct CliOptions { pub reporter: CliReporter, #[bpaf( + env("PGT_LOG_LEVEL"), long("log-level"), argument("none|debug|info|warn|error"), fallback(LoggingLevel::default()), @@ -73,6 +74,7 @@ pub struct CliOptions { /// How the log should look like. #[bpaf( + env("PGT_LOG_KIND"), long("log-kind"), argument("pretty|compact|json"), fallback(LoggingKind::default()), diff --git a/crates/pgt_cli/src/commands/daemon.rs b/crates/pgt_cli/src/commands/daemon.rs index db6c4eb1..0c3f3c33 100644 --- a/crates/pgt_cli/src/commands/daemon.rs +++ b/crates/pgt_cli/src/commands/daemon.rs @@ -5,19 +5,20 @@ use crate::{ use pgt_console::{ConsoleExt, markup}; use pgt_lsp::ServerFactory; use pgt_workspace::{TransportError, WorkspaceError, workspace::WorkspaceClient}; -use std::{env, fs, path::PathBuf}; +use std::{alloc::System, env, fs, path::PathBuf}; use tokio::io; use tokio::runtime::Runtime; -use tracing::subscriber::Interest; -use tracing::{Instrument, Metadata, debug_span, metadata::LevelFilter}; +use tracing::{Instrument, Level, Metadata, debug_span, metadata::LevelFilter}; +use tracing::{level_filters, subscriber::Interest}; use tracing_appender::rolling::Rotation; use tracing_subscriber::{ Layer, + fmt::time::{FormatTime, SystemTime}, layer::{Context, Filter}, prelude::*, registry, }; -use tracing_tree::HierarchicalLayer; +use tracing_tree::{HierarchicalLayer, time::UtcDateTime}; pub(crate) fn start( session: CliSession, @@ -78,8 +79,9 @@ pub(crate) fn run_server( config_path: Option, log_path: Option, log_file_name_prefix: Option, + log_level: Option, ) -> Result<(), CliDiagnostic> { - setup_tracing_subscriber(log_path, log_file_name_prefix); + setup_tracing_subscriber(log_path, log_file_name_prefix, log_level); let rt = Runtime::new()?; let factory = ServerFactory::new(stop_on_disconnect); @@ -208,8 +210,13 @@ pub(crate) fn read_most_recent_log_file( /// is written to log files rotated on a hourly basis (in /// `pgt-logs/server.log.yyyy-MM-dd-HH` files inside the system temporary /// directory) -fn setup_tracing_subscriber(log_path: Option, log_file_name_prefix: Option) { +fn setup_tracing_subscriber( + log_path: Option, + log_file_name_prefix: Option, + log_level: Option, +) { let pgt_log_path = log_path.unwrap_or(pgt_fs::ensure_cache_dir().join("pgt-logs")); + let appender_builder = tracing_appender::rolling::RollingFileAppender::builder(); let file_appender = appender_builder .filename_prefix(log_file_name_prefix.unwrap_or(String::from("server.log"))) @@ -226,8 +233,9 @@ fn setup_tracing_subscriber(log_path: Option, log_file_name_prefix: Opt .with_bracketed_fields(true) .with_targets(true) .with_ansi(false) + .with_timer(UtcDateTime::default()) .with_writer(file_appender) - .with_filter(LoggingFilter), + .with_filter(PgtLoggingFilter::from(log_level)), ) .init(); } @@ -239,22 +247,34 @@ pub fn default_pgt_log_path() -> PathBuf { } } -/// Tracing filter enabling: -/// - All spans and events at level info or higher -/// - All spans and events at level debug in crates whose name starts with `pgt` -struct LoggingFilter; +/// Tracing Filter with two rules: +/// For all crates starting with pgt*, use `PGT_LOG_LEVEL` or CLI option or "info" as default +/// For all other crates, use "info" +struct PgtLoggingFilter(LevelFilter); -/// Tracing filter used for spans emitted by `pgt*` crates -const SELF_FILTER: LevelFilter = if cfg!(debug_assertions) { - LevelFilter::TRACE -} else { - LevelFilter::DEBUG -}; +impl From> for PgtLoggingFilter { + fn from(value: Option) -> Self { + Self( + value + .map(|lv_filter| match lv_filter.as_str() { + "trace" => LevelFilter::TRACE, + "debug" => LevelFilter::DEBUG, + "info" => LevelFilter::INFO, + "warn" => LevelFilter::WARN, + "error" => LevelFilter::ERROR, + "off" => LevelFilter::OFF, + + _ => LevelFilter::INFO, + }) + .unwrap_or(LevelFilter::INFO), + ) + } +} -impl LoggingFilter { +impl PgtLoggingFilter { fn is_enabled(&self, meta: &Metadata<'_>) -> bool { let filter = if meta.target().starts_with("pgt") { - SELF_FILTER + self.0 } else { LevelFilter::INFO }; @@ -263,7 +283,7 @@ impl LoggingFilter { } } -impl Filter for LoggingFilter { +impl Filter for PgtLoggingFilter { fn enabled(&self, meta: &Metadata<'_>, _cx: &Context<'_, S>) -> bool { self.is_enabled(meta) } @@ -277,6 +297,6 @@ impl Filter for LoggingFilter { } fn max_level_hint(&self) -> Option { - Some(SELF_FILTER) + Some(self.0) } } diff --git a/crates/pgt_cli/src/commands/mod.rs b/crates/pgt_cli/src/commands/mod.rs index b475d298..6fe6dd93 100644 --- a/crates/pgt_cli/src/commands/mod.rs +++ b/crates/pgt_cli/src/commands/mod.rs @@ -151,6 +151,7 @@ pub enum PgtCommand { display_fallback )] log_prefix_name: String, + /// Allows to change the folder where logs are stored. #[bpaf( env("PGT_LOG_PATH"), @@ -161,6 +162,15 @@ pub enum PgtCommand { )] log_path: PathBuf, + /// Allows to change the log level + #[bpaf( + env("PGT_LOG_LEVEL"), + long("log-level"), + argument("trace|debug|info|warn|error|none"), + fallback(String::from("info")) + )] + log_level: String, + #[bpaf(long("stop-on-disconnect"), hide_usage)] stop_on_disconnect: bool, /// Allows to set a custom file path to the configuration file, diff --git a/crates/pgt_cli/src/lib.rs b/crates/pgt_cli/src/lib.rs index 4197f181..d0bbe1af 100644 --- a/crates/pgt_cli/src/lib.rs +++ b/crates/pgt_cli/src/lib.rs @@ -105,11 +105,13 @@ impl<'app> CliSession<'app> { config_path, log_path, log_prefix_name, + log_level, } => commands::daemon::run_server( stop_on_disconnect, config_path, Some(log_path), Some(log_prefix_name), + Some(log_level), ), PgtCommand::PrintSocket => commands::daemon::print_socket(), }; diff --git a/crates/pgt_cli/src/logging.rs b/crates/pgt_cli/src/logging.rs index e9086655..35911927 100644 --- a/crates/pgt_cli/src/logging.rs +++ b/crates/pgt_cli/src/logging.rs @@ -11,6 +11,7 @@ pub fn setup_cli_subscriber(level: LoggingLevel, kind: LoggingKind) { if level == LoggingLevel::None { return; } + let format = tracing_subscriber::fmt::layer() .with_level(true) .with_target(false) diff --git a/crates/pgt_lsp/src/handlers/completions.rs b/crates/pgt_lsp/src/handlers/completions.rs index 4eb0436a..4778d9f0 100644 --- a/crates/pgt_lsp/src/handlers/completions.rs +++ b/crates/pgt_lsp/src/handlers/completions.rs @@ -3,7 +3,11 @@ use anyhow::Result; use pgt_workspace::{WorkspaceError, workspace}; use tower_lsp::lsp_types::{self, CompletionItem, CompletionItemLabelDetails}; -#[tracing::instrument(level = "trace", skip_all)] +#[tracing::instrument(level = "debug", skip_all, fields( + url = params.text_document_position.text_document.uri.as_str(), + character = params.text_document_position.position.character, + line = params.text_document_position.position.line +), err)] pub fn get_completions( session: &Session, params: lsp_types::CompletionParams, diff --git a/crates/pgt_lsp/src/handlers/text_document.rs b/crates/pgt_lsp/src/handlers/text_document.rs index 2dadcf02..aa2496fb 100644 --- a/crates/pgt_lsp/src/handlers/text_document.rs +++ b/crates/pgt_lsp/src/handlers/text_document.rs @@ -10,7 +10,10 @@ use tower_lsp::lsp_types; use tracing::error; /// Handler for `textDocument/didOpen` LSP notification -#[tracing::instrument(level = "debug", skip(session), err)] +#[tracing::instrument(level = "info", skip_all, fields( + url = params.text_document.uri.as_str(), + version = params.text_document.version +), err)] pub(crate) async fn did_open( session: &Session, params: lsp_types::DidOpenTextDocumentParams, @@ -38,7 +41,11 @@ pub(crate) async fn did_open( } // Handler for `textDocument/didChange` LSP notification -#[tracing::instrument(level = "debug", skip(session), err)] +#[tracing::instrument(level = "debug", skip_all, fields( + uri = params.text_document.uri.as_str(), + version = params.text_document.version, + num_content_changes = params.content_changes.len() +), err)] pub(crate) async fn did_change( session: &Session, params: lsp_types::DidChangeTextDocumentParams, @@ -90,7 +97,9 @@ pub(crate) async fn did_change( } /// Handler for `textDocument/didClose` LSP notification -#[tracing::instrument(level = "debug", skip(session), err)] +#[tracing::instrument(level = "info", skip_all, fields( + url = params.text_document.uri.as_str(), +), err)] pub(crate) async fn did_close( session: &Session, params: lsp_types::DidCloseTextDocumentParams, diff --git a/crates/pgt_lsp/src/server.rs b/crates/pgt_lsp/src/server.rs index 17d8cf5e..5c7afcfd 100644 --- a/crates/pgt_lsp/src/server.rs +++ b/crates/pgt_lsp/src/server.rs @@ -174,14 +174,13 @@ impl LanguageServer for LSPServer { } #[tracing::instrument(level = "info", skip_all)] - async fn did_change_configuration(&self, params: DidChangeConfigurationParams) { - let _ = params; + async fn did_change_configuration(&self, _params: DidChangeConfigurationParams) { self.session.load_workspace_settings().await; self.setup_capabilities().await; self.session.update_all_diagnostics().await; } - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip_all)] async fn did_change_watched_files(&self, params: DidChangeWatchedFilesParams) { let file_paths = params .changes @@ -217,35 +216,35 @@ impl LanguageServer for LSPServer { } } - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip_all)] async fn did_open(&self, params: DidOpenTextDocumentParams) { handlers::text_document::did_open(&self.session, params) .await .ok(); } - #[tracing::instrument(level = "trace", skip(self, params))] + #[tracing::instrument(level = "trace", skip_all)] async fn did_change(&self, params: DidChangeTextDocumentParams) { if let Err(e) = handlers::text_document::did_change(&self.session, params).await { error!("{}", e); }; } - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip_all)] async fn did_save(&self, params: DidSaveTextDocumentParams) { // handlers::text_document::did_save(&self.session, params) // .await // .ok(); } - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip_all)] async fn did_close(&self, params: DidCloseTextDocumentParams) { handlers::text_document::did_close(&self.session, params) .await .ok(); } - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip_all)] async fn completion(&self, params: CompletionParams) -> LspResult> { match handlers::completions::get_completions(&self.session, params) { Ok(result) => LspResult::Ok(Some(result)), diff --git a/crates/pgt_text_size/src/size.rs b/crates/pgt_text_size/src/size.rs index dccb512e..55ff3065 100644 --- a/crates/pgt_text_size/src/size.rs +++ b/crates/pgt_text_size/src/size.rs @@ -2,7 +2,8 @@ use { crate::TextLen, std::{ convert::TryFrom, - fmt, iter, + fmt::{self, Display}, + iter, num::TryFromIntError, ops::{Add, AddAssign, Sub, SubAssign}, u32, @@ -32,6 +33,12 @@ impl fmt::Debug for TextSize { } } +impl Display for TextSize { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.raw) + } +} + impl TextSize { /// Creates a new instance of `TextSize` from a raw `u32`. #[inline] diff --git a/crates/pgt_workspace/src/settings.rs b/crates/pgt_workspace/src/settings.rs index 2ae10c08..36f4097d 100644 --- a/crates/pgt_workspace/src/settings.rs +++ b/crates/pgt_workspace/src/settings.rs @@ -77,7 +77,7 @@ impl AsMut for SettingsHandleMut<'_> { impl Settings { /// The [PartialConfiguration] is merged into the workspace - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip(self), err)] pub fn merge_with_configuration( &mut self, configuration: PartialConfiguration, diff --git a/crates/pgt_workspace/src/workspace/server.rs b/crates/pgt_workspace/src/workspace/server.rs index 942ae34d..c2b5c9c8 100644 --- a/crates/pgt_workspace/src/workspace/server.rs +++ b/crates/pgt_workspace/src/workspace/server.rs @@ -144,7 +144,7 @@ impl Workspace for WorkspaceServer { /// ## Panics /// This function may panic if the internal settings mutex has been poisoned /// by another thread having previously panicked while holding the lock - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "trace", skip(self), err)] fn update_settings(&self, params: UpdateSettingsParams) -> Result<(), WorkspaceError> { tracing::info!("Updating settings in workspace"); @@ -170,10 +170,8 @@ impl Workspace for WorkspaceServer { } /// Add a new file to the workspace - #[tracing::instrument(level = "trace", skip(self))] + #[tracing::instrument(level = "info", skip_all, fields(path = params.path.as_path().as_os_str().to_str()), err)] fn open_file(&self, params: OpenFileParams) -> Result<(), WorkspaceError> { - tracing::info!("Opening file: {:?}", params.path); - let doc = Document::new(params.path.clone(), params.content, params.version); doc.iter_statements_with_text().for_each(|(stmt, content)| { @@ -202,6 +200,10 @@ impl Workspace for WorkspaceServer { } /// Change the content of an open file + #[tracing::instrument(level = "debug", skip_all, fields( + path = params.path.as_os_str().to_str(), + version = params.version + ), err)] fn change_file(&self, params: super::ChangeFileParams) -> Result<(), WorkspaceError> { let mut doc = self .documents @@ -212,22 +214,39 @@ impl Workspace for WorkspaceServer { params.version, )); - tracing::info!("Changing file: {:?}", params); - for c in &doc.apply_file_change(¶ms) { match c { StatementChange::Added(added) => { - tracing::debug!("Adding statement: {:?}", added); + tracing::debug!( + "Adding statement: id:{:?}, path:{:?}, text:{:?}", + added.stmt.id, + added.stmt.path.as_os_str().to_str(), + added.text + ); self.tree_sitter.add_statement(&added.stmt, &added.text); self.pg_query.add_statement(&added.stmt, &added.text); } StatementChange::Deleted(s) => { - tracing::debug!("Deleting statement: {:?}", s); + tracing::debug!( + "Deleting statement: id:{:?}, path:{:?}", + s.id, + s.path.as_os_str() + ); self.tree_sitter.remove_statement(s); self.pg_query.remove_statement(s); } StatementChange::Modified(s) => { - tracing::debug!("Modifying statement: {:?}", s); + tracing::debug!( + "Modifying statement with id {:?} (new id {:?}) in {:?}. Range {:?}, Changed from '{:?}' to '{:?}', changed text: {:?}", + s.old_stmt.id, + s.new_stmt.id, + s.old_stmt.path.as_os_str().to_str(), + s.change_range, + s.old_stmt_text, + s.new_stmt_text, + s.change_text + ); + self.tree_sitter.modify_statement(s); self.pg_query.modify_statement(s); } @@ -394,17 +413,14 @@ impl Workspace for WorkspaceServer { }) } - #[tracing::instrument(level = "debug", skip(self))] + #[tracing::instrument(level = "debug", skip_all, fields( + path = params.path.as_os_str().to_str(), + position = params.position.to_string() + ), err)] fn get_completions( &self, params: super::GetCompletionsParams, ) -> Result { - tracing::debug!( - "Getting completions for file {:?} at position {:?}", - ¶ms.path, - ¶ms.position - ); - let pool = match self.connection.read().unwrap().get_pool() { Some(pool) => pool, None => return Ok(pgt_completions::CompletionResult::default()), @@ -415,12 +431,6 @@ impl Workspace for WorkspaceServer { .get(¶ms.path) .ok_or(WorkspaceError::not_found())?; - tracing::debug!( - "Found the document. Looking for statement in file {:?} at position: {:?}", - ¶ms.path, - ¶ms.position - ); - let (statement, stmt_range, text) = match doc .iter_statements_with_text_and_range() .find(|(_, r, _)| r.contains(params.position)) @@ -436,7 +446,7 @@ impl Workspace for WorkspaceServer { let tree = self.tree_sitter.get_parse_tree(&statement); tracing::debug!( - "Found the statement. We're looking for position {:?}. Statement Range {:?} to {:?}. Statement: {}", + "Found the statement. We're looking for position {:?}. Statement Range {:?} to {:?}. Statement: {:?}", position, stmt_range.start(), stmt_range.end(), @@ -445,8 +455,6 @@ impl Workspace for WorkspaceServer { let schema_cache = self.schema_cache.load(pool)?; - tracing::debug!("Loaded schema cache for completions"); - let result = pgt_completions::complete(pgt_completions::CompletionParams { position, schema: schema_cache.as_ref(), diff --git a/crates/pgt_workspace/src/workspace/server/pg_query.rs b/crates/pgt_workspace/src/workspace/server/pg_query.rs index 48f7cf13..3ed452fc 100644 --- a/crates/pgt_workspace/src/workspace/server/pg_query.rs +++ b/crates/pgt_workspace/src/workspace/server/pg_query.rs @@ -28,7 +28,7 @@ impl PgQueryStore { if let Ok(ast) = r { self.ast_db.insert(statement.clone(), Arc::new(ast)); } else { - tracing::info!("adding diagnostics"); + tracing::info!("invalid statement, adding diagnostics."); self.diagnostics .insert(statement.clone(), SyntaxDiagnostic::from(r.unwrap_err())); } From 8b5b6b6e2e98e508eb9ad51944cd88578a4b9cc4 Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 29 Mar 2025 15:24:33 +0100 Subject: [PATCH 02/13] use bunyan --- Cargo.lock | 79 +++++++++++++++------------ Cargo.toml | 1 + crates/pgt_cli/Cargo.toml | 2 +- crates/pgt_cli/src/commands/daemon.rs | 22 +++----- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebdaa25b..e35c9336 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,6 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom", "once_cell", "version_check", "zerocopy", @@ -1422,6 +1423,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getopts" version = "0.2.21" @@ -2126,15 +2137,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "nu-ansi-term" -version = "0.50.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -2188,15 +2190,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "object" version = "0.36.5" @@ -2417,8 +2410,8 @@ dependencies = [ "tokio", "tracing", "tracing-appender", + "tracing-bunyan-formatter", "tracing-subscriber", - "tracing-tree", ] [[package]] @@ -3986,9 +3979,7 @@ checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -4220,6 +4211,24 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "tracing-bunyan-formatter" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d637245a0d8774bd48df6482e086c59a8b5348a910c3b0579354045a9d82411" +dependencies = [ + "ahash", + "gethostname", + "log", + "serde", + "serde_json", + "time", + "tracing", + "tracing-core", + "tracing-log 0.1.4", + "tracing-subscriber", +] + [[package]] name = "tracing-core" version = "0.1.33" @@ -4230,6 +4239,17 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -4258,7 +4278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", - "nu-ansi-term 0.46.0", + "nu-ansi-term", "once_cell", "regex", "serde", @@ -4268,23 +4288,10 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", "tracing-serde", ] -[[package]] -name = "tracing-tree" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f459ca79f1b0d5f71c54ddfde6debfc59c8b6eeb46808ae492077f739dc7b49c" -dependencies = [ - "nu-ansi-term 0.50.1", - "time", - "tracing-core", - "tracing-log", - "tracing-subscriber", -] - [[package]] name = "tree-sitter" version = "0.20.10" diff --git a/Cargo.toml b/Cargo.toml index c37231ac..31501320 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,6 +47,7 @@ tokio = { version = "1.40.0", features = ["full"] } tower-lsp = "0.20.0" tracing = { version = "0.1.40", default-features = false, features = ["std"] } tracing-subscriber = "0.3.18" +tracing-bunyan-formatter = { version = "0.3.10 "} tree-sitter = "0.20.10" tree_sitter_sql = { path = "./lib/tree_sitter_sql", version = "0.0.0" } unicode-width = "0.1.12" diff --git a/crates/pgt_cli/Cargo.toml b/crates/pgt_cli/Cargo.toml index 6134a1e3..74b02d43 100644 --- a/crates/pgt_cli/Cargo.toml +++ b/crates/pgt_cli/Cargo.toml @@ -38,7 +38,7 @@ tokio = { workspace = true, features = ["io-std", "io-util", tracing = { workspace = true } tracing-appender = "0.2.3" tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } -tracing-tree = { version = "0.4.0", features = ["time"] } +tracing-bunyan-formatter = {workspace = true} [target.'cfg(unix)'.dependencies] libc = "0.2.161" diff --git a/crates/pgt_cli/src/commands/daemon.rs b/crates/pgt_cli/src/commands/daemon.rs index 0c3f3c33..bc92db76 100644 --- a/crates/pgt_cli/src/commands/daemon.rs +++ b/crates/pgt_cli/src/commands/daemon.rs @@ -5,20 +5,19 @@ use crate::{ use pgt_console::{ConsoleExt, markup}; use pgt_lsp::ServerFactory; use pgt_workspace::{TransportError, WorkspaceError, workspace::WorkspaceClient}; -use std::{alloc::System, env, fs, path::PathBuf}; +use std::{env, fs, path::PathBuf}; use tokio::io; use tokio::runtime::Runtime; -use tracing::{Instrument, Level, Metadata, debug_span, metadata::LevelFilter}; -use tracing::{level_filters, subscriber::Interest}; +use tracing::subscriber::Interest; +use tracing::{Instrument, Metadata, debug_span, metadata::LevelFilter}; use tracing_appender::rolling::Rotation; +use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer}; use tracing_subscriber::{ - Layer, - fmt::time::{FormatTime, SystemTime}, + fmt::Layer, layer::{Context, Filter}, prelude::*, registry, }; -use tracing_tree::{HierarchicalLayer, time::UtcDateTime}; pub(crate) fn start( session: CliSession, @@ -218,6 +217,7 @@ fn setup_tracing_subscriber( let pgt_log_path = log_path.unwrap_or(pgt_fs::ensure_cache_dir().join("pgt-logs")); let appender_builder = tracing_appender::rolling::RollingFileAppender::builder(); + let file_appender = appender_builder .filename_prefix(log_file_name_prefix.unwrap_or(String::from("server.log"))) .max_log_files(7) @@ -226,15 +226,9 @@ fn setup_tracing_subscriber( .expect("Failed to start the logger for the daemon."); registry() + .with(JsonStorageLayer) .with( - HierarchicalLayer::default() - .with_indent_lines(true) - .with_indent_amount(2) - .with_bracketed_fields(true) - .with_targets(true) - .with_ansi(false) - .with_timer(UtcDateTime::default()) - .with_writer(file_appender) + BunyanFormattingLayer::new("pgt_logs".into(), file_appender) .with_filter(PgtLoggingFilter::from(log_level)), ) .init(); From cbac487d5258aef24044e60afd0539aeff58f138 Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 29 Mar 2025 15:25:30 +0100 Subject: [PATCH 03/13] add comment --- justfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/justfile b/justfile index d43e2f52..6aa4ac0b 100644 --- a/justfile +++ b/justfile @@ -108,5 +108,7 @@ merge-main: # Make sure to set your PGT_LOG_PATH in your shell profile. +# We recommend to install `bunyan` (npm i -g bunyan) and pipe the output through there for color-coding: +# just show-logs | bunyan show-logs: tail -f $(ls $PGT_LOG_PATH/server.log.* | sort -t- -k2,2 -k3,3 -k4,4 | tail -n 1) \ No newline at end of file From 8e105b0518b30dfb29a2d9a7e1f8861dadb04c8a Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 29 Mar 2025 15:26:13 +0100 Subject: [PATCH 04/13] format --- Cargo.toml | 22 +++++++++++----------- crates/pgt_cli/Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 31501320..72a2164a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,17 +40,17 @@ serde_json = "1.0.114" similar = "2.6.0" smallvec = { version = "1.13.2", features = ["union", "const_new", "serde"] } # this will use tokio if available, otherwise async-std -sqlx = { version = "0.8.2", features = ["runtime-tokio", "runtime-async-std", "postgres", "json"] } -syn = "1.0.109" -termcolor = "1.4.1" -tokio = { version = "1.40.0", features = ["full"] } -tower-lsp = "0.20.0" -tracing = { version = "0.1.40", default-features = false, features = ["std"] } -tracing-subscriber = "0.3.18" -tracing-bunyan-formatter = { version = "0.3.10 "} -tree-sitter = "0.20.10" -tree_sitter_sql = { path = "./lib/tree_sitter_sql", version = "0.0.0" } -unicode-width = "0.1.12" +sqlx = { version = "0.8.2", features = ["runtime-tokio", "runtime-async-std", "postgres", "json"] } +syn = "1.0.109" +termcolor = "1.4.1" +tokio = { version = "1.40.0", features = ["full"] } +tower-lsp = "0.20.0" +tracing = { version = "0.1.40", default-features = false, features = ["std"] } +tracing-bunyan-formatter = { version = "0.3.10 " } +tracing-subscriber = "0.3.18" +tree-sitter = "0.20.10" +tree_sitter_sql = { path = "./lib/tree_sitter_sql", version = "0.0.0" } +unicode-width = "0.1.12" # postgres specific crates pgt_analyse = { path = "./crates/pgt_analyse", version = "0.0.0" } diff --git a/crates/pgt_cli/Cargo.toml b/crates/pgt_cli/Cargo.toml index 74b02d43..a443f584 100644 --- a/crates/pgt_cli/Cargo.toml +++ b/crates/pgt_cli/Cargo.toml @@ -37,8 +37,8 @@ serde_json = { workspace = true } tokio = { workspace = true, features = ["io-std", "io-util", "net", "time", "rt", "sync", "rt-multi-thread", "macros"] } tracing = { workspace = true } tracing-appender = "0.2.3" +tracing-bunyan-formatter = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } -tracing-bunyan-formatter = {workspace = true} [target.'cfg(unix)'.dependencies] libc = "0.2.161" From 814e88ff96dde5de0713592cd6ba27636c252d1f Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 29 Mar 2025 15:39:03 +0100 Subject: [PATCH 05/13] loglvl comment --- justfile | 1 + 1 file changed, 1 insertion(+) diff --git a/justfile b/justfile index 6aa4ac0b..2755e2a9 100644 --- a/justfile +++ b/justfile @@ -108,6 +108,7 @@ merge-main: # Make sure to set your PGT_LOG_PATH in your shell profile. +# You can use the PGT_LOG_LEVEL to set your log level. # We recommend to install `bunyan` (npm i -g bunyan) and pipe the output through there for color-coding: # just show-logs | bunyan show-logs: From 7044ad755754387fdd96f874988ed33c98f26762 Mon Sep 17 00:00:00 2001 From: Julian Date: Sun, 30 Mar 2025 17:32:15 +0200 Subject: [PATCH 06/13] merge --- crates/pgt_workspace/src/workspace/server.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/crates/pgt_workspace/src/workspace/server.rs b/crates/pgt_workspace/src/workspace/server.rs index 50de9227..ae0473b2 100644 --- a/crates/pgt_workspace/src/workspace/server.rs +++ b/crates/pgt_workspace/src/workspace/server.rs @@ -559,13 +559,7 @@ impl Workspace for WorkspaceServer { let schema_cache = self.schema_cache.load(pool)?; -<<<<<<< HEAD - let result = pgt_completions::complete(pgt_completions::CompletionParams { -======= - tracing::debug!("Loaded schema cache for completions"); - let items = pgt_completions::complete(pgt_completions::CompletionParams { ->>>>>>> 506c8267ef135831faed3facf0fb288bde50c3d9 position, schema: schema_cache.as_ref(), tree: tree.as_deref(), From 534317add0ff48e6d6272222c26638bb0e8116b6 Mon Sep 17 00:00:00 2001 From: Julian Date: Sun, 30 Mar 2025 17:43:01 +0200 Subject: [PATCH 07/13] woops --- crates/pgt_lsp/src/handlers/completions.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/pgt_lsp/src/handlers/completions.rs b/crates/pgt_lsp/src/handlers/completions.rs index 07f5654f..52d2a5f6 100644 --- a/crates/pgt_lsp/src/handlers/completions.rs +++ b/crates/pgt_lsp/src/handlers/completions.rs @@ -3,6 +3,8 @@ use anyhow::Result; use pgt_workspace::{WorkspaceError, features::completions::GetCompletionsParams}; use tower_lsp::lsp_types::{self, CompletionItem, CompletionItemLabelDetails}; +use super::helper::get_cursor_position; + #[tracing::instrument(level = "debug", skip_all, fields( url = params.text_document_position.text_document.uri.as_str(), character = params.text_document_position.position.character, @@ -17,11 +19,7 @@ pub fn get_completions( let completion_result = match session.workspace.get_completions(GetCompletionsParams { path, - position: helper::get_cursor_position( - session, - &url, - params.text_document_position.position, - )?, + position: get_cursor_position(session, &url, params.text_document_position.position)?, }) { Ok(result) => result, Err(e) => match e { From be246da5de4ea38bb5b5ecb7cc6a5a2dc8660dd2 Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 2 Apr 2025 09:18:28 +0200 Subject: [PATCH 08/13] import --- crates/pgt_lsp/src/handlers/completions.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/pgt_lsp/src/handlers/completions.rs b/crates/pgt_lsp/src/handlers/completions.rs index 60d61cac..f18ae598 100644 --- a/crates/pgt_lsp/src/handlers/completions.rs +++ b/crates/pgt_lsp/src/handlers/completions.rs @@ -3,8 +3,6 @@ use anyhow::Result; use pgt_workspace::{WorkspaceError, features::completions::GetCompletionsParams}; use tower_lsp::lsp_types::{self, CompletionItem, CompletionItemLabelDetails}; -use super::helper::get_cursor_position; - #[tracing::instrument(level = "debug", skip_all, fields( url = params.text_document_position.text_document.uri.as_str(), character = params.text_document_position.position.character, From b33a2e3cfb5e7e5f756c118b4c30d19c76b38feb Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 2 Apr 2025 09:18:51 +0200 Subject: [PATCH 09/13] ok --- crates/pgt_cli/src/commands/daemon.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/pgt_cli/src/commands/daemon.rs b/crates/pgt_cli/src/commands/daemon.rs index d6a37a93..9104f148 100644 --- a/crates/pgt_cli/src/commands/daemon.rs +++ b/crates/pgt_cli/src/commands/daemon.rs @@ -13,7 +13,6 @@ use tracing::{Instrument, Metadata, debug_span, metadata::LevelFilter}; use tracing_appender::rolling::Rotation; use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer}; use tracing_subscriber::{ - fmt::Layer, layer::{Context, Filter}, prelude::*, registry, From efcfe1aef5f357eef9d38e003f400703acf009c0 Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 2 Apr 2025 09:32:10 +0200 Subject: [PATCH 10/13] remove log kind env --- crates/pgt_cli/src/cli_options.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/pgt_cli/src/cli_options.rs b/crates/pgt_cli/src/cli_options.rs index c4427be6..d1bfaee9 100644 --- a/crates/pgt_cli/src/cli_options.rs +++ b/crates/pgt_cli/src/cli_options.rs @@ -74,7 +74,6 @@ pub struct CliOptions { /// How the log should look like. #[bpaf( - env("PGT_LOG_KIND"), long("log-kind"), argument("pretty|compact|json"), fallback(LoggingKind::default()), From 8edf0763744cac7b3f05921c22c21863f1bb323d Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 2 Apr 2025 09:34:29 +0200 Subject: [PATCH 11/13] default debug --- crates/pgt_cli/src/commands/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pgt_cli/src/commands/mod.rs b/crates/pgt_cli/src/commands/mod.rs index 1fa46517..9949c610 100644 --- a/crates/pgt_cli/src/commands/mod.rs +++ b/crates/pgt_cli/src/commands/mod.rs @@ -167,7 +167,7 @@ pub enum PgtCommand { env("PGT_LOG_LEVEL"), long("log-level"), argument("trace|debug|info|warn|error|none"), - fallback(String::from("info")) + fallback(String::from("debug")) )] log_level: String, From 2864ee2bdfd94ca1bbd7a1a153f93168326fb4b6 Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 2 Apr 2025 09:34:59 +0200 Subject: [PATCH 12/13] comment --- crates/pgt_cli/src/commands/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pgt_cli/src/commands/mod.rs b/crates/pgt_cli/src/commands/mod.rs index 9949c610..28944f5e 100644 --- a/crates/pgt_cli/src/commands/mod.rs +++ b/crates/pgt_cli/src/commands/mod.rs @@ -162,7 +162,7 @@ pub enum PgtCommand { )] log_path: PathBuf, - /// Allows to change the log level + /// Allows to change the log level. Default is debug. This will only affect "pgt*" crates. All others are logged with info level. #[bpaf( env("PGT_LOG_LEVEL"), long("log-level"), From 60814b0d798192d1f78123df56f89990181d5f51 Mon Sep 17 00:00:00 2001 From: Julian Date: Thu, 3 Apr 2025 10:05:00 +0200 Subject: [PATCH 13/13] add hierarchical layer --- Cargo.lock | 36 +++++++++++++++++++++- Cargo.toml | 2 +- crates/pgt_cli/Cargo.toml | 1 + crates/pgt_cli/src/commands/daemon.rs | 43 ++++++++++++++++++++++----- crates/pgt_cli/src/commands/mod.rs | 9 ++++++ crates/pgt_cli/src/lib.rs | 2 ++ crates/pgt_lsp/src/server.rs | 2 +- 7 files changed, 84 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b129978..79ec52f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2143,6 +2143,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -2196,6 +2205,15 @@ dependencies = [ "libm", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "object" version = "0.36.5" @@ -2417,6 +2435,7 @@ dependencies = [ "tracing-appender", "tracing-bunyan-formatter", "tracing-subscriber", + "tracing-tree", ] [[package]] @@ -4014,7 +4033,9 @@ checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", + "libc", "num-conv", + "num_threads", "powerfmt", "serde", "time-core", @@ -4313,7 +4334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", - "nu-ansi-term", + "nu-ansi-term 0.46.0", "once_cell", "regex", "serde", @@ -4327,6 +4348,19 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "tracing-tree" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f459ca79f1b0d5f71c54ddfde6debfc59c8b6eeb46808ae492077f739dc7b49c" +dependencies = [ + "nu-ansi-term 0.50.1", + "time", + "tracing-core", + "tracing-log 0.2.0", + "tracing-subscriber", +] + [[package]] name = "tree-sitter" version = "0.20.10" diff --git a/Cargo.toml b/Cargo.toml index 33a2b414..e4472250 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ strum = { version = "0.27.1", features = ["derive"] } sqlx = { version = "0.8.2", features = ["runtime-tokio", "runtime-async-std", "postgres", "json"] } syn = "1.0.109" termcolor = "1.4.1" -test-log = "0.2.17" +test-log = "0.2.17" tokio = { version = "1.40.0", features = ["full"] } tower-lsp = "0.20.0" tracing = { version = "0.1.40", default-features = false, features = ["std"] } diff --git a/crates/pgt_cli/Cargo.toml b/crates/pgt_cli/Cargo.toml index a443f584..f2a3fa18 100644 --- a/crates/pgt_cli/Cargo.toml +++ b/crates/pgt_cli/Cargo.toml @@ -39,6 +39,7 @@ tracing = { workspace = true } tracing-appender = "0.2.3" tracing-bunyan-formatter = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } +tracing-tree = { version = "0.4.0", features = ["time"] } [target.'cfg(unix)'.dependencies] libc = "0.2.161" diff --git a/crates/pgt_cli/src/commands/daemon.rs b/crates/pgt_cli/src/commands/daemon.rs index 9104f148..988286f4 100644 --- a/crates/pgt_cli/src/commands/daemon.rs +++ b/crates/pgt_cli/src/commands/daemon.rs @@ -17,6 +17,7 @@ use tracing_subscriber::{ prelude::*, registry, }; +use tracing_tree::{HierarchicalLayer, time::UtcDateTime}; pub(crate) fn start( session: CliSession, @@ -78,8 +79,9 @@ pub(crate) fn run_server( log_path: Option, log_file_name_prefix: Option, log_level: Option, + log_kind: Option, ) -> Result<(), CliDiagnostic> { - setup_tracing_subscriber(log_path, log_file_name_prefix, log_level); + setup_tracing_subscriber(log_path, log_file_name_prefix, log_level, log_kind); let rt = Runtime::new()?; let factory = ServerFactory::new(stop_on_disconnect); @@ -185,6 +187,7 @@ fn setup_tracing_subscriber( log_path: Option, log_file_name_prefix: Option, log_level: Option, + log_kind: Option, ) { let pgt_log_path = log_path.unwrap_or(pgt_fs::ensure_cache_dir().join("pgt-logs")); @@ -197,13 +200,37 @@ fn setup_tracing_subscriber( .build(pgt_log_path) .expect("Failed to start the logger for the daemon."); - registry() - .with(JsonStorageLayer) - .with( - BunyanFormattingLayer::new("pgt_logs".into(), file_appender) - .with_filter(PgtLoggingFilter::from(log_level)), - ) - .init(); + let filter = PgtLoggingFilter::from(log_level); + + let log_kind = log_kind.unwrap_or("hierarchical".into()); + + match log_kind.as_str() { + "bunyan" => { + registry() + .with(JsonStorageLayer) + .with( + BunyanFormattingLayer::new("pgt_logs".into(), file_appender) + .with_filter(filter), + ) + .init(); + } + + _ => registry() + .with( + HierarchicalLayer::default() + .with_indent_lines(true) + .with_indent_amount(2) + .with_bracketed_fields(true) + .with_targets(true) + .with_ansi(false) + .with_timer(UtcDateTime { + higher_precision: false, + }) + .with_writer(file_appender) + .with_filter(filter), + ) + .init(), + } } pub fn default_pgt_log_path() -> PathBuf { diff --git a/crates/pgt_cli/src/commands/mod.rs b/crates/pgt_cli/src/commands/mod.rs index 28944f5e..b166a033 100644 --- a/crates/pgt_cli/src/commands/mod.rs +++ b/crates/pgt_cli/src/commands/mod.rs @@ -171,6 +171,15 @@ pub enum PgtCommand { )] log_level: String, + /// Allows to change the logging format kind. Default is hierarchical. + #[bpaf( + env("PGT_LOG_KIND"), + long("log-kind"), + argument("hierarchical|bunyan"), + fallback(String::from("hierarchical")) + )] + log_kind: String, + #[bpaf(long("stop-on-disconnect"), hide_usage)] stop_on_disconnect: bool, /// Allows to set a custom file path to the configuration file, diff --git a/crates/pgt_cli/src/lib.rs b/crates/pgt_cli/src/lib.rs index d0bbe1af..f8a04244 100644 --- a/crates/pgt_cli/src/lib.rs +++ b/crates/pgt_cli/src/lib.rs @@ -106,12 +106,14 @@ impl<'app> CliSession<'app> { log_path, log_prefix_name, log_level, + log_kind, } => commands::daemon::run_server( stop_on_disconnect, config_path, Some(log_path), Some(log_prefix_name), Some(log_level), + Some(log_kind), ), PgtCommand::PrintSocket => commands::daemon::print_socket(), }; diff --git a/crates/pgt_lsp/src/server.rs b/crates/pgt_lsp/src/server.rs index b51fcf42..9bf9b9c2 100644 --- a/crates/pgt_lsp/src/server.rs +++ b/crates/pgt_lsp/src/server.rs @@ -227,7 +227,7 @@ impl LanguageServer for LSPServer { async fn code_action(&self, params: CodeActionParams) -> LspResult> { match handlers::code_actions::get_actions(&self.session, params) { Ok(result) => { - tracing::info!("Got Code Actions: {:?}", result); + tracing::trace!("Got {} Code Action(s)", result.len()); return LspResult::Ok(Some(result)); } Err(e) => LspResult::Err(into_lsp_error(e)),