|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange
|
rcl_logging_implementation package from rcl_logging reporcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog |
ROS Distro
|
Package Summary
| Version | 0.0.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros2/rcl_logging.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-01-16 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tomoya Fujita
Authors
- Tomoya Fujita
rcl_logging_implementation
Overview
The rcl_logging_implementation package provides dynamic loading capabilities for rcl logging implementations, similar to how rmw_implementation works for middleware layers.
This allows users to switch logging backends at runtime without rebuilding rcl.
[!NOTE] This package is only used when dynamic loading is enabled at build time. When RCL is built with a specific logging implementation (e.g.,
rcl_logging_spdlog), it links directly to that implementation without this abstraction layer, eliminating function call overhead.
Features
-
Dynamic Loading: Load logging implementations (e.g.,
rcl_logging_spdlog,rcl_logging_noop) at runtime -
Runtime Configuration: Use
RCL_LOGGING_IMPLEMENTATIONenvironment variable to select implementation -
Fallback Default: Defaults to
rcl_logging_spdlogif no implementation is specified
Architecture
Dynamic Loading (Default)
When rcl is built without specifying RCL_LOGGING_IMPLEMENTATION, it uses this package for runtime selection:
rcl application
↓
rcl (core library)
↓
rcl_logging_implementation (this package) ← Dynamic loading happens here
├─ Runtime Loading → rcl_logging_spdlog
├─ Runtime Loading → rcl_logging_noop
└─ Runtime Loading → custom implementations
Static Linking (Opt-in)
When rcl is built with RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog, it bypasses this package entirely:
rcl application
↓
rcl (core library)
↓
rcl_logging_spdlog ← Direct link, no abstraction layer
See more details for basic design.
Usage
Runtime Configuration (Dynamic Loading)
Set the RCL_LOGGING_IMPLEMENTATION environment variable to select a logging implementation at runtime:
# Use spdlog (default)
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
ros2 run my_package my_node
# Use noop
export RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
ros2 run my_package my_node
# Use custom implementation
export RCL_LOGGING_IMPLEMENTATION=my_custom_logging
ros2 run my_package my_node
If not set, the implementation defaults to rcl_logging_spdlog that you can also set via DEFAULT_RCL_LOGGING_IMPLEMENTATION.
# Set the default to noop (still allows runtime override via environment variable)
colcon build --packages-select rcl_logging_implementation --cmake-args -DDEFAULT_RCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Build-Time Configuration (Static Linking)
For applications that require static linking (e.g., embedded systems, strict deployment requirements), configure rcl at build time to link directly to a specific implementation:
# Build RCL with static linking to spdlog (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog
# Build RCL with static linking to noop (bypasses rcl_logging_implementation)
colcon build --packages-select rcl --cmake-args -DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| rcl_logging_spdlog | |
| ament_lint_auto | |
| ament_lint_common | |
| rcl_logging_noop | |
| rcl_logging_interface | |
| rcpputils | |
| rcutils |