2021-06-29 05:45:32 +00:00
|
|
|
use tracing::subscriber::set_global_default;
|
|
|
|
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
|
|
|
|
use tracing_log::LogTracer;
|
|
|
|
use tracing_subscriber::{layer::SubscriberExt, EnvFilter};
|
|
|
|
|
2021-06-29 08:52:29 +00:00
|
|
|
pub fn init_log(name: &str, env_filter: &str) -> std::result::Result<(), String> {
|
2021-07-02 12:47:52 +00:00
|
|
|
let env_filter =
|
|
|
|
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(env_filter.to_owned()));
|
2021-06-29 05:45:32 +00:00
|
|
|
let formatting_layer = BunyanFormattingLayer::new(name.to_owned(), std::io::stdout);
|
2021-07-02 12:47:52 +00:00
|
|
|
|
2021-06-29 05:45:32 +00:00
|
|
|
let subscriber = tracing_subscriber::fmt()
|
|
|
|
.with_target(false)
|
2021-07-02 12:47:52 +00:00
|
|
|
.with_writer(std::io::stdout)
|
2021-06-29 05:45:32 +00:00
|
|
|
.with_thread_ids(false)
|
|
|
|
.with_target(false)
|
|
|
|
.compact()
|
|
|
|
.finish()
|
|
|
|
.with(env_filter)
|
|
|
|
.with(JsonStorageLayer)
|
|
|
|
.with(formatting_layer);
|
|
|
|
|
2021-06-29 08:52:29 +00:00
|
|
|
let _ = LogTracer::init().map_err(|e| format!("{:?}", e))?;
|
|
|
|
let _ = set_global_default(subscriber).map_err(|e| format!("{:?}", e))?;
|
2021-06-29 05:45:32 +00:00
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_log() {
|
2021-06-29 08:52:29 +00:00
|
|
|
init_log("flowy-log", "info").unwrap();
|
2021-06-29 05:45:32 +00:00
|
|
|
tracing::info!("😁 Tracing info log");
|
|
|
|
log::info!("😁 bridge 'log' to 'tracing'");
|
|
|
|
}
|
|
|
|
}
|