dagger_sdk/
logging.rs

1use crate::core::logger::{DynLogger, Logger};
2use tracing::Level;
3
4pub fn default_logging() -> eyre::Result<()> {
5    tracing_subscriber::fmt().with_max_level(Level::INFO).init();
6    Ok(())
7}
8
9#[derive(Default)]
10pub struct StdLogger {}
11
12impl Logger for StdLogger {
13    fn stdout(&self, output: &str) -> eyre::Result<()> {
14        println!("{}", output);
15
16        Ok(())
17    }
18
19    fn stderr(&self, output: &str) -> eyre::Result<()> {
20        eprintln!("{}", output);
21
22        Ok(())
23    }
24}
25
26#[derive(Default)]
27pub struct TracingLogger {}
28
29impl Logger for TracingLogger {
30    fn stdout(&self, output: &str) -> eyre::Result<()> {
31        tracing::info!(output = output, "dagger-sdk");
32
33        Ok(())
34    }
35
36    fn stderr(&self, output: &str) -> eyre::Result<()> {
37        tracing::warn!(output = output, "dagger-sdk");
38
39        Ok(())
40    }
41}
42
43#[derive(Default)]
44pub struct AggregateLogger {
45    pub loggers: Vec<DynLogger>,
46}
47
48impl Logger for AggregateLogger {
49    fn stdout(&self, output: &str) -> eyre::Result<()> {
50        for logger in &self.loggers {
51            logger.stdout(output).unwrap()
52        }
53
54        Ok(())
55    }
56
57    fn stderr(&self, output: &str) -> eyre::Result<()> {
58        for logger in &self.loggers {
59            logger.stderr(output).unwrap()
60        }
61
62        Ok(())
63    }
64}