blob: bdf6c0d423cea873560ca01ee20ac7f7122fb1f9 [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use anyhow::Result;
use logging::LogFormat;
use rand::Rng;
use tracing_subscriber::{
filter::{self, LevelFilter},
prelude::*,
Layer,
};
lazy_static::lazy_static! {
static ref LOGGING_ID: u64 = generate_id();
}
fn generate_id() -> u64 {
rand::thread_rng().gen::<u64>()
}
pub fn init(level: LevelFilter) -> Result<()> {
configure_subscribers(level);
Ok(())
}
fn target_levels() -> Vec<(String, LevelFilter)> {
vec![]
}
fn configure_subscribers(level: LevelFilter) {
let filter_targets = filter::Targets::new().with_targets(target_levels()).with_default(level);
let include_spans = true;
let stdio_layer = {
let event_format = LogFormat::new(*LOGGING_ID, include_spans);
let format = tracing_subscriber::fmt::layer()
.event_format(event_format)
.with_filter(filter_targets.clone());
Some(format)
};
tracing_subscriber::registry().with(stdio_layer).init();
}