1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- use log::LevelFilter;
- use tracing::subscriber::set_global_default;
- use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
- use tracing_log::LogTracer;
- use tracing_subscriber::{layer::SubscriberExt, EnvFilter};
- pub struct Builder {
- name: String,
- env_filter: String,
- }
- impl Builder {
- pub fn new(name: &str) -> Self {
- Builder {
- name: name.to_owned(),
- env_filter: "Info".to_owned(),
- }
- }
- pub fn env_filter(mut self, env_filter: &str) -> Self {
- self.env_filter = env_filter.to_owned();
- self
- }
- pub fn build(self) -> std::result::Result<(), String> {
- let env_filter = EnvFilter::new(self.env_filter);
- let subscriber = tracing_subscriber::fmt()
- .with_target(true)
- .with_max_level(tracing::Level::DEBUG)
- .with_writer(std::io::stderr)
- .with_thread_ids(true)
- .compact()
- .finish()
- .with(env_filter);
- let formatting_layer = BunyanFormattingLayer::new(self.name, std::io::stdout);
- let _ = set_global_default(subscriber.with(JsonStorageLayer).with(formatting_layer))
- .map_err(|e| format!("{:?}", e))?;
- let _ = LogTracer::builder()
- .with_max_level(LevelFilter::Debug)
- .init()
- .map_err(|e| format!("{:?}", e))
- .unwrap();
- Ok(())
- }
- }
|