33// Adapted from https://github.com/sequenceplanner/r2r/blob/89cec03d07a1496a225751159cbc7bfb529d9dd1/r2r/src/utils.rs
44
55use std:: {
6- ffi:: CString ,
7- sync:: { Mutex , Once } ,
6+ ffi:: CString ,
7+ sync:: { Mutex , Once } ,
88} ;
99
1010use crate :: error;
@@ -16,69 +16,75 @@ static LOG_GUARD: Mutex<()> = Mutex::new(());
1616/// Don't call this directly, use the logging macros instead.
1717#[ doc( hidden) ]
1818pub fn log ( msg : & str , logger_name : & str , file : & str , line : u32 , severity : LogSeverity ) {
19- // currently not possible to get function name in rust.
20- // see https://github.com/rust-lang/rfcs/pull/2818
21- let function = CString :: new ( "" ) . unwrap ( ) ;
22- let file = CString :: new ( file) . unwrap ( ) ;
23- let location = rcutils_log_location_t {
24- function_name : function. as_ptr ( ) ,
25- file_name : file. as_ptr ( ) ,
26- line_number : line as usize ,
27- } ;
28- let format = CString :: new ( "%s" ) . unwrap ( ) ;
29- let logger_name = CString :: new ( logger_name) . unwrap ( ) ;
30- let message = CString :: new ( msg) . unwrap ( ) ;
31- let severity = severity. to_native ( ) ;
19+ // currently not possible to get function name in rust.
20+ // see https://github.com/rust-lang/rfcs/pull/2818
21+ let function = CString :: new ( "" ) . unwrap ( ) ;
22+ let file = CString :: new ( file) . unwrap ( ) ;
23+ let location = rcutils_log_location_t {
24+ function_name : function. as_ptr ( ) ,
25+ file_name : file. as_ptr ( ) ,
26+ line_number : line as usize ,
27+ } ;
28+ let format = CString :: new ( "%s" ) . unwrap ( ) ;
29+ let logger_name = CString :: new ( logger_name) . unwrap ( ) ;
30+ let message = CString :: new ( msg) . unwrap ( ) ;
31+ let severity = severity. to_native ( ) ;
3232
33- INIT . call_once ( || {
34- let ret = unsafe { rcutils_logging_initialize ( ) } ;
35- if let Err ( code) = error:: to_rclrs_result ( ret) {
36- panic ! ( "Failed to initialize logging: {:?}" , code) ;
37- }
38- } ) ;
39- let _guard = LOG_GUARD . lock ( ) . unwrap ( ) ;
40- unsafe {
41- rcutils_log (
42- & location,
43- severity as i32 ,
44- logger_name. as_ptr ( ) ,
45- format. as_ptr ( ) ,
46- message. as_ptr ( ) ,
47- ) ;
48- }
33+ INIT . call_once ( || {
34+ let ret = unsafe { rcutils_logging_initialize ( ) } ;
35+ if let Err ( code) = error:: to_rclrs_result ( ret) {
36+ panic ! ( "Failed to initialize logging: {:?}" , code) ;
37+ }
38+ } ) ;
39+ let _guard = LOG_GUARD . lock ( ) . unwrap ( ) ;
40+ unsafe {
41+ rcutils_log (
42+ & location,
43+ severity as i32 ,
44+ logger_name. as_ptr ( ) ,
45+ format. as_ptr ( ) ,
46+ message. as_ptr ( ) ,
47+ ) ;
48+ }
4949}
5050
5151/// Logging severity
5252#[ doc( hidden) ]
5353pub enum LogSeverity {
54- Unset ,
55- Debug ,
56- Info ,
57- Warn ,
58- Error ,
59- Fatal ,
54+ Unset ,
55+ Debug ,
56+ Info ,
57+ Warn ,
58+ Error ,
59+ Fatal ,
6060}
6161
6262impl LogSeverity {
63- fn to_native ( & self ) -> RCUTILS_LOG_SEVERITY {
64- use crate :: rcl_bindings:: rcl_log_severity_t:: * ;
65- match self {
66- LogSeverity :: Unset => RCUTILS_LOG_SEVERITY_UNSET ,
67- LogSeverity :: Debug => RCUTILS_LOG_SEVERITY_DEBUG ,
68- LogSeverity :: Info => RCUTILS_LOG_SEVERITY_INFO ,
69- LogSeverity :: Warn => RCUTILS_LOG_SEVERITY_WARN ,
70- LogSeverity :: Error => RCUTILS_LOG_SEVERITY_ERROR ,
71- LogSeverity :: Fatal => RCUTILS_LOG_SEVERITY_FATAL ,
72- }
73- }
63+ fn to_native ( & self ) -> RCUTILS_LOG_SEVERITY {
64+ use crate :: rcl_bindings:: rcl_log_severity_t:: * ;
65+ match self {
66+ LogSeverity :: Unset => RCUTILS_LOG_SEVERITY_UNSET ,
67+ LogSeverity :: Debug => RCUTILS_LOG_SEVERITY_DEBUG ,
68+ LogSeverity :: Info => RCUTILS_LOG_SEVERITY_INFO ,
69+ LogSeverity :: Warn => RCUTILS_LOG_SEVERITY_WARN ,
70+ LogSeverity :: Error => RCUTILS_LOG_SEVERITY_ERROR ,
71+ LogSeverity :: Fatal => RCUTILS_LOG_SEVERITY_FATAL ,
72+ }
73+ }
7474}
7575
7676/// A helper macro to log the message.
7777#[ macro_export]
7878macro_rules! __impl_log {
79- ( $logger_name: expr, $msg: expr, $file: expr, $line: expr, $severity: expr) => { {
80- $crate:: log( & std:: fmt:: format( $msg) , $logger_name, $file, $line, $severity) ;
81- } } ;
79+ ( $logger_name: expr, $msg: expr, $file: expr, $line: expr, $severity: expr) => { {
80+ $crate:: log(
81+ & std:: fmt:: format( $msg) ,
82+ $logger_name,
83+ $file,
84+ $line,
85+ $severity,
86+ ) ;
87+ } } ;
8288}
8389
8490/// Debug log message.
0 commit comments