File tree 2 files changed +17
-2
lines changed
2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -25,5 +25,8 @@ fn main() {
25
25
py. run ( "logging.warning('WARNING')" , None , None ) . unwrap ( ) ;
26
26
py. run ( "logging.error('ERROR')" , None , None ) . unwrap ( ) ;
27
27
py. run ( "logging.critical('CRITICAL')" , None , None ) . unwrap ( ) ;
28
+
29
+
30
+ py. run ( "logging.getLogger('foo.bar.baz').info('INFO')" , None , None ) . unwrap ( ) ;
28
31
} ) ;
29
32
}
Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ pub fn register(target: &str) {
13
13
14
14
/// Consume a Python `logging.LogRecord` and emit a Rust `Log` instead.
15
15
#[ pyfunction]
16
- fn host_log ( record : & PyAny , target : & str ) -> PyResult < ( ) > {
16
+ fn host_log ( record : & PyAny , rust_target : & str ) -> PyResult < ( ) > {
17
17
let level = record. getattr ( "levelno" ) ?;
18
18
let message = record. getattr ( "getMessage" ) ?. call0 ( ) ?. to_string ( ) ;
19
19
let pathname = record. getattr ( "pathname" ) ?. to_string ( ) ;
@@ -22,7 +22,19 @@ fn host_log(record: &PyAny, target: &str) -> PyResult<()> {
22
22
. to_string ( )
23
23
. parse :: < u32 > ( )
24
24
. unwrap ( ) ;
25
- let _logger_name = record. getattr ( "name" ) ?. to_string ( ) ;
25
+
26
+ let logger_name = record. getattr ( "name" ) ?. to_string ( ) ;
27
+
28
+ let full_target: Option < String > = if logger_name. trim ( ) . is_empty ( ) || logger_name == "root" {
29
+ None
30
+ } else {
31
+ // Libraries (ex: tracing_subscriber::filter::Directive) expect rust-style targets like foo::bar,
32
+ // and may not deal well with "." as a module separator:
33
+ let logger_name = logger_name. replace ( "." , "::" ) ;
34
+ Some ( format ! ( "{rust_target}::{logger_name}" ) )
35
+ } ;
36
+ let target = full_target. as_ref ( ) . map ( |x| x. as_str ( ) ) . unwrap_or ( rust_target) ;
37
+
26
38
27
39
// error
28
40
let error_metadata = if level. ge ( 40u8 ) ? {
You can’t perform that action at this time.
0 commit comments