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;