sea_shell/
logger.rs

1use crate::re_exports::String;
2
3pub trait Logger {
4  fn debug(&self, message: String);
5
6  fn info(&self, message: String);
7
8  fn warn(&self, message: String);
9
10  fn error(&self, message: String);
11
12  fn raw(&self, message: String);
13}
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16#[repr(u8)]
17pub enum LogLevel {
18  Debug = 4,
19  Info = 3,
20  Warn = 2,
21  Error = 1,
22  None = 0,
23}
24
25#[macro_export]
26macro_rules! create_logger_from_logger {
27  ( $logger:expr, $newlines:expr ) => {
28    crate::macro_helpers::with_dollar_sign! {
29      ( $escape:tt ) => {
30        #[allow(unused_macros)]
31        macro_rules! log {
32          ( $level:ident, $arg:expr ) => {
33            $logger.$level(match $newlines {
34              true => format!("{}\n", $arg),
35              false => $arg.to_string(),
36            });
37          };
38          ( $level:ident, $escape($arg:tt)* ) => {
39            $logger.$level(match $newlines {
40              true => format!("{}\n", format!($escape($arg)*)),
41              false => format!($escape($arg)*),
42            });
43          };
44          () => {
45            $logger.raw('\n'.into());
46          };
47        }
48      }
49    }
50  };
51}
52
53pub use create_logger_from_logger;
54
55#[cfg(feature = "default-logger")]
56pub mod default;