@@ -7,8 +7,6 @@ include!(concat!(env!("OUT_DIR"), "/log_filter.rs"));
7
7
include ! ( concat!( env!( "OUT_DIR" ) , "\\ log_filter.rs" ) ) ;
8
8
9
9
/// Initialize the logger with the given maximum log level.
10
- ///
11
- /// `ESP_LOG` environment variable will still be honored if set.
12
10
pub fn init_logger ( level : log:: LevelFilter ) {
13
11
unsafe {
14
12
log:: set_logger_racy ( & EspLogger ) . unwrap ( ) ;
@@ -19,14 +17,31 @@ pub fn init_logger(level: log::LevelFilter) {
19
17
/// Initialize the logger from the `ESP_LOG` environment variable.
20
18
pub fn init_logger_from_env ( ) {
21
19
unsafe {
22
- log:: set_logger_racy ( & EspLogger ) . unwrap ( ) ;
20
+ log:: set_logger_racy ( & EspEnvLogger ) . unwrap ( ) ;
23
21
log:: set_max_level_racy ( FILTER_MAX ) ;
24
22
}
25
23
}
26
24
27
25
struct EspLogger ;
28
26
29
27
impl log:: Log for EspLogger {
28
+ #[ allow( unused) ]
29
+ fn enabled ( & self , _: & log:: Metadata ) -> bool {
30
+ // Filtered by `log` already
31
+ true
32
+ }
33
+
34
+ #[ allow( unused) ]
35
+ fn log ( & self , record : & log:: Record ) {
36
+ print_log_record ( record) ;
37
+ }
38
+
39
+ fn flush ( & self ) { }
40
+ }
41
+
42
+ struct EspEnvLogger ;
43
+
44
+ impl log:: Log for EspEnvLogger {
30
45
fn enabled ( & self , metadata : & log:: Metadata ) -> bool {
31
46
let level = metadata. level ( ) ;
32
47
let target = metadata. target ( ) ;
@@ -35,49 +50,51 @@ impl log::Log for EspLogger {
35
50
36
51
#[ allow( unused) ]
37
52
fn log ( & self , record : & log:: Record ) {
38
- if ! self . enabled ( & record. metadata ( ) ) {
39
- return ;
53
+ if self . enabled ( & record. metadata ( ) ) {
54
+ print_log_record ( record ) ;
40
55
}
41
-
42
- const RESET : & str = "\u{001B} [0m" ;
43
- const RED : & str = "\u{001B} [31m" ;
44
- const GREEN : & str = "\u{001B} [32m" ;
45
- const YELLOW : & str = "\u{001B} [33m" ;
46
- const BLUE : & str = "\u{001B} [34m" ;
47
- const CYAN : & str = "\u{001B} [35m" ;
48
-
49
- #[ cfg( feature = "colors" ) ]
50
- let color = match record. level ( ) {
51
- log:: Level :: Error => RED ,
52
- log:: Level :: Warn => YELLOW ,
53
- log:: Level :: Info => GREEN ,
54
- log:: Level :: Debug => BLUE ,
55
- log:: Level :: Trace => CYAN ,
56
- } ;
57
- #[ cfg( feature = "colors" ) ]
58
- let reset = RESET ;
59
-
60
- #[ cfg( not( feature = "colors" ) ) ]
61
- let color = "" ;
62
- #[ cfg( not( feature = "colors" ) ) ]
63
- let reset = "" ;
64
-
65
- #[ cfg( feature = "timestamp" ) ]
66
- println ! (
67
- "{}{} ({}) - {}{}" ,
68
- color,
69
- record. level( ) ,
70
- unsafe { _esp_println_timestamp( ) } ,
71
- record. args( ) ,
72
- reset
73
- ) ;
74
- #[ cfg( not( feature = "timestamp" ) ) ]
75
- println ! ( "{}{} - {}{}" , color, record. level( ) , record. args( ) , reset) ;
76
56
}
77
57
78
58
fn flush ( & self ) { }
79
59
}
80
60
61
+ fn print_log_record ( record : & log:: Record ) {
62
+ const RESET : & str = "\u{001B} [0m" ;
63
+ const RED : & str = "\u{001B} [31m" ;
64
+ const GREEN : & str = "\u{001B} [32m" ;
65
+ const YELLOW : & str = "\u{001B} [33m" ;
66
+ const BLUE : & str = "\u{001B} [34m" ;
67
+ const CYAN : & str = "\u{001B} [35m" ;
68
+
69
+ #[ cfg( feature = "colors" ) ]
70
+ let color = match record. level ( ) {
71
+ log:: Level :: Error => RED ,
72
+ log:: Level :: Warn => YELLOW ,
73
+ log:: Level :: Info => GREEN ,
74
+ log:: Level :: Debug => BLUE ,
75
+ log:: Level :: Trace => CYAN ,
76
+ } ;
77
+ #[ cfg( feature = "colors" ) ]
78
+ let reset = RESET ;
79
+
80
+ #[ cfg( not( feature = "colors" ) ) ]
81
+ let color = "" ;
82
+ #[ cfg( not( feature = "colors" ) ) ]
83
+ let reset = "" ;
84
+
85
+ #[ cfg( feature = "timestamp" ) ]
86
+ println ! (
87
+ "{}{} ({}) - {}{}" ,
88
+ color,
89
+ record. level( ) ,
90
+ unsafe { _esp_println_timestamp( ) } ,
91
+ record. args( ) ,
92
+ reset
93
+ ) ;
94
+ #[ cfg( not( feature = "timestamp" ) ) ]
95
+ println ! ( "{}{} - {}{}" , color, record. level( ) , record. args( ) , reset) ;
96
+ }
97
+
81
98
/// A user-provided hook to supply a timestamp in milliseconds for logging.
82
99
///
83
100
/// When enabled via the `"timestamp"` feature, this function should be
0 commit comments