Detailed changes
@@ -21001,6 +21001,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"chrono",
+ "collections",
"log",
"tempfile",
"workspace-hack",
@@ -21011,9 +21012,8 @@ name = "zlog_settings"
version = "0.1.0"
dependencies = [
"anyhow",
+ "collections",
"gpui",
- "schemars",
- "serde",
"settings",
"workspace-hack",
"zlog",
@@ -39,6 +39,12 @@ pub struct SettingsContent {
/// Configuration of audio in Zed.
pub audio: Option<AudioSettingsContent>,
+
+ /// A map of log scopes to the desired log level.
+ /// Useful for filtering out noisy logs or enabling more verbose logging.
+ ///
+ /// Example: {"log": {"client": "warn"}}
+ pub log: Option<HashMap<String, String>>,
}
impl SettingsContent {
@@ -15,6 +15,7 @@ path = "src/zlog.rs"
default = []
[dependencies]
+collections.workspace = true
chrono.workspace = true
log.workspace = true
workspace-hack.workspace = true
@@ -1,9 +1,8 @@
-use std::{
- collections::{HashMap, VecDeque},
- sync::{
- OnceLock, RwLock,
- atomic::{AtomicU8, Ordering},
- },
+use collections::HashMap;
+use std::collections::VecDeque;
+use std::sync::{
+ OnceLock, RwLock,
+ atomic::{AtomicU8, Ordering},
};
use crate::{SCOPE_DEPTH_MAX, SCOPE_STRING_SEP_STR, Scope, ScopeAlloc, env_config, private};
@@ -17,8 +17,7 @@ default = []
[dependencies]
anyhow.workspace = true
gpui.workspace = true
-schemars.workspace = true
-serde.workspace = true
+collections.workspace = true
settings.workspace = true
zlog.workspace = true
workspace-hack.workspace = true
@@ -1,9 +1,8 @@
//! # zlog_settings
-use anyhow::Result;
+use collections::HashMap;
+
use gpui::App;
-use schemars::JsonSchema;
-use serde::{Deserialize, Serialize};
-use settings::{Settings, SettingsKey, SettingsStore, SettingsUi};
+use settings::{Settings, SettingsStore};
pub fn init(cx: &mut App) {
ZlogSettings::register(cx);
@@ -15,33 +14,27 @@ pub fn init(cx: &mut App) {
.detach();
}
-#[derive(
- Clone,
- Debug,
- Default,
- Serialize,
- Deserialize,
- PartialEq,
- Eq,
- JsonSchema,
- SettingsUi,
- SettingsKey,
-)]
-#[settings_key(key = "log")]
+#[derive(Clone, Debug)]
pub struct ZlogSettings {
- #[serde(default, flatten)]
- pub scopes: std::collections::HashMap<String, String>,
+ /// A map of log scopes to the desired log level.
+ /// Useful for filtering out noisy logs or enabling more verbose logging.
+ ///
+ /// Example: {"log": {"client": "warn"}}
+ pub scopes: HashMap<String, String>,
}
impl Settings for ZlogSettings {
- type FileContent = Self;
+ fn from_default(content: &settings::SettingsContent, _: &mut App) -> Option<Self> {
+ Some(ZlogSettings {
+ scopes: content.log.clone()?,
+ })
+ }
- fn load(sources: settings::SettingsSources<Self::FileContent>, _: &mut App) -> Result<Self>
- where
- Self: Sized,
- {
- sources.json_merge()
+ fn refine(&mut self, content: &settings::SettingsContent, _: &mut App) {
+ if let Some(log) = &content.log {
+ self.scopes.extend(log.clone());
+ }
}
- fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut Self::FileContent) {}
+ fn import_from_vscode(_: &settings::VsCodeSettings, _: &mut settings::SettingsContent) {}
}