Monorepo for Tangled tangled.org
2

Configure Feed

Select the types of activity you want to include in your feed.

1use std::fs::{File, OpenOptions}; 2use std::io::{self, Write}; 3use tracing_subscriber::EnvFilter; 4use tracing_subscriber::fmt::MakeWriter; 5 6pub fn init() { 7 let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")); 8 tracing_subscriber::fmt() 9 .with_env_filter(filter) 10 .with_writer(ConsoleAndStderr) 11 .init(); 12} 13 14#[derive(Clone, Copy, Debug)] 15struct ConsoleAndStderr; 16 17struct TeeWriter { 18 stderr: io::Stderr, 19 console: Option<File>, 20} 21 22impl<'a> MakeWriter<'a> for ConsoleAndStderr { 23 type Writer = TeeWriter; 24 25 fn make_writer(&'a self) -> Self::Writer { 26 TeeWriter { 27 stderr: io::stderr(), 28 console: OpenOptions::new().write(true).open("/dev/console").ok(), 29 } 30 } 31} 32 33impl Write for TeeWriter { 34 fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 35 self.stderr.write_all(buf)?; 36 if let Some(console) = &mut self.console { 37 console.write_all(buf)?; 38 } 39 Ok(buf.len()) 40 } 41 42 fn flush(&mut self) -> io::Result<()> { 43 self.stderr.flush()?; 44 if let Some(console) = &mut self.console { 45 console.flush()?; 46 } 47 Ok(()) 48 } 49}