瀏覽代碼

add logger

appflowy 3 年之前
父節點
當前提交
6fe196e97f
共有 4 個文件被更改,包括 51 次插入0 次删除
  1. 1 0
      .idea/appflowy_client.iml
  2. 1 0
      rust-lib/Cargo.toml
  3. 14 0
      rust-lib/flowy-log/Cargo.toml
  4. 35 0
      rust-lib/flowy-log/src/lib.rs

+ 1 - 0
.idea/appflowy_client.iml

@@ -8,6 +8,7 @@
       <sourceFolder url="file://$MODULE_DIR$/rust-lib/flowy-sys/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/rust-lib/flowy-sys/tests" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/rust-lib/dart-ffi/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/rust-lib/flowy-log/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/rust-lib/flowy-sdk/src" isTestSource="false" />
       <excludeFolder url="file://$MODULE_DIR$/app_flowy/packages/af_protobuf/.pub" />
       <excludeFolder url="file://$MODULE_DIR$/app_flowy/packages/af_protobuf/.dart_tool" />

+ 1 - 0
rust-lib/Cargo.toml

@@ -3,6 +3,7 @@ members = [
   "flowy-sys",
   "flowy-sdk",
   "dart-ffi",
+  "flowy-log",
 ]
 
 [profile.dev]

+ 14 - 0
rust-lib/flowy-log/Cargo.toml

@@ -0,0 +1,14 @@
+[package]
+name = "flowy-log"
+version = "0.1.0"
+edition = "2018"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+tracing = { version = "0.1", features = ["log"] }
+tracing-log = "0.1.1"
+tracing-futures = "0.2.4"
+tracing-subscriber = { version = "0.2.12", features = ["registry", "env-filter"] }
+tracing-bunyan-formatter = "0.2.2"
+log = "0.4.14"

+ 35 - 0
rust-lib/flowy-log/src/lib.rs

@@ -0,0 +1,35 @@
+use log::SetLoggerError;
+use tracing::subscriber::set_global_default;
+use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
+use tracing_log::LogTracer;
+use tracing_subscriber::{layer::SubscriberExt, EnvFilter};
+
+pub fn init_log(name: &str, env_filter: &str) -> std::Result<(), SetLoggerError> {
+    let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(env_filter.to_owned()));
+    let formatting_layer = BunyanFormattingLayer::new(name.to_owned(), std::io::stdout);
+    let subscriber = tracing_subscriber::fmt()
+        .with_target(false)
+        .with_thread_ids(false)
+        .with_target(false)
+        .compact()
+        .finish()
+        .with(env_filter)
+        .with(JsonStorageLayer)
+        .with(formatting_layer);
+
+    let _ = LogTracer::init()?;
+    let _ = set_global_default(subscriber)?;
+    Ok(())
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_log() {
+        init_log("flowy-log", "info");
+        tracing::info!("😁 Tracing info log");
+        log::info!("😁 bridge 'log' to 'tracing'");
+    }
+}