Skip to content

Commit

Permalink
allow logging as json
Browse files Browse the repository at this point in the history
  • Loading branch information
DolceTriade committed Mar 7, 2024
1 parent 6ded0d6 commit dd56dd1
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 15 deletions.
6 changes: 1 addition & 5 deletions blade/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ cfg_if! {
if #[cfg(feature = "hydrate")] {
use leptos::*;
use wasm_bindgen::prelude::wasm_bindgen;
use tracing_web::{MakeWebConsoleWriter, performance_layer};
use tracing_subscriber::fmt::format::Pretty;
use tracing_web::{MakeWebConsoleWriter};
use tracing_subscriber::prelude::*;
use crate::routes::app::App;

Expand All @@ -18,12 +17,9 @@ cfg_if! {
.with_ansi(false) // Only partially supported across browsers
.without_time() // std::time is not available in browsers, see note below
.with_writer(MakeWebConsoleWriter::new()); // write events to the console
let perf_layer = performance_layer()
.with_details_from_fields(Pretty::default());

tracing_subscriber::registry()
.with(fmt_layer)
.with(perf_layer)
.init();
mount_to_body(App);
}
Expand Down
19 changes: 12 additions & 7 deletions blade/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,28 +56,33 @@ cfg_if! {
session_lock_time: std::time::Duration,
#[arg(long="flame", value_name = "FLAME")]
flame_path: Option<String>,
#[arg(long="json", value_name="JSON", default_value="false")]
json: bool,
}

fn fmt_layer<S>(show_spans: bool) -> Box<dyn Layer<S> + Sync + Send>
fn fmt_layer<S>(show_spans: bool, json: bool) -> Box<dyn Layer<S> + Sync + Send>
where S: for<'a> tracing_subscriber::registry::LookupSpan<'a> + tracing::Subscriber{
let use_ansi = std::io::stdout().is_terminal();
let mut fmt_layer = tracing_subscriber::fmt::layer()
.with_ansi(use_ansi)
.compact()
.with_file(true)
.with_line_number(true);

if show_spans {
fmt_layer = fmt_layer.with_span_events(FmtSpan::CLOSE);
}

fmt_layer.boxed()
if json {
return fmt_layer.json().boxed();
}

fmt_layer.compact().boxed()
}

type SpanHandle = Handle<Box<dyn Layer<Registry> + Send + Sync>, Registry>;
fn init_logging(flame: Option<&String>) -> (Handle<EnvFilter, impl Sized>, SpanHandle, Option<impl Drop>) {
fn init_logging(flame: Option<&String>, json: bool) -> (Handle<EnvFilter, impl Sized>, SpanHandle, Option<impl Drop>) {
let env_filter = tracing_subscriber::EnvFilter::builder().with_default_directive(LevelFilter::INFO.into()).from_env_lossy();
let fmt_layer = fmt_layer(false);
let fmt_layer = fmt_layer(false, json);
let (layer, span_handle) = tracing_subscriber::reload::Layer::new(fmt_layer);
let (filter, handle) = tracing_subscriber::reload::Layer::new(env_filter);

Expand All @@ -101,7 +106,7 @@ cfg_if! {
async fn main() -> anyhow::Result<()> {
let args = Args::parse();
// install global subscriber configured based on RUST_LOG envvar.
let (filter_handle, span_handle, _guard) = init_logging(args.flame_path.as_ref());
let (filter_handle, span_handle, _guard) = init_logging(args.flame_path.as_ref(), args.json);


let (filter_tx, mut filter_rx) = tokio::sync::mpsc::channel::<String>(3);
Expand Down Expand Up @@ -136,7 +141,7 @@ cfg_if! {
let span = tracing::span!(tracing::Level::INFO, "set_span", enable=enable);
let _e = span.enter();
tracing::info!("Setting span enable: {enable}");
if let Some(e) = span_handle.reload(fmt_layer(enable)).err() {
if let Some(e) = span_handle.reload(fmt_layer(enable, args.json)).err() {
tracing::error!("error setting span enable: {e}");
}
},
Expand Down
63 changes: 61 additions & 2 deletions third_party/rust/Cargo.Bazel.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"checksum": "1b94a3d2fabd13045a4d6669f621733b322ca43842de765e8fb4226cdf099018",
"checksum": "6bb716c128152f86d4bbe70d4621d48b2e212f0507856440505b59135aaa4d14",
"crates": {
"actix-codec 0.5.1": {
"name": "actix-codec",
Expand Down Expand Up @@ -18623,6 +18623,49 @@
},
"license": "MIT"
},
"tracing-serde 0.1.3": {
"name": "tracing-serde",
"version": "0.1.3",
"repository": {
"Http": {
"url": "https://crates.io/api/v1/crates/tracing-serde/0.1.3/download",
"sha256": "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
}
},
"targets": [
{
"Library": {
"crate_name": "tracing_serde",
"crate_root": "src/lib.rs",
"srcs": [
"**/*.rs"
]
}
}
],
"library_target_name": "tracing_serde",
"common_attrs": {
"compile_data_glob": [
"**"
],
"deps": {
"common": [
{
"id": "serde 1.0.186",
"target": "serde"
},
{
"id": "tracing-core 0.1.32",
"target": "tracing_core"
}
],
"selects": {}
},
"edition": "2018",
"version": "0.1.3"
},
"license": "MIT"
},
"tracing-subscriber 0.3.18": {
"name": "tracing-subscriber",
"version": "0.3.18",
Expand Down Expand Up @@ -18655,18 +18698,22 @@
"default",
"env-filter",
"fmt",
"json",
"matchers",
"nu-ansi-term",
"once_cell",
"parking_lot",
"regex",
"registry",
"serde",
"serde_json",
"sharded-slab",
"smallvec",
"std",
"thread_local",
"tracing",
"tracing-log"
"tracing-log",
"tracing-serde"
],
"selects": {}
},
Expand All @@ -18692,6 +18739,14 @@
"id": "regex 1.9.3",
"target": "regex"
},
{
"id": "serde 1.0.186",
"target": "serde"
},
{
"id": "serde_json 1.0.108",
"target": "serde_json"
},
{
"id": "sharded-slab 0.1.7",
"target": "sharded_slab"
Expand All @@ -18715,6 +18770,10 @@
{
"id": "tracing-log 0.2.0",
"target": "tracing_log"
},
{
"id": "tracing-serde 0.1.3",
"target": "tracing_serde"
}
],
"selects": {}
Expand Down
13 changes: 13 additions & 0 deletions third_party/rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion third_party/rust/deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ def rust_dependencies():
),
"tracing-subscriber": crate.spec(
version = "0.3.18",
features = ["env-filter", "parking_lot"],
features = ["env-filter", "parking_lot", "json"],
),
"tracing-actix-web": crate.spec(
version = "0.7.9",
Expand Down

0 comments on commit dd56dd1

Please sign in to comment.