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}