No version for distro humble showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro jazzy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro kilted showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro ardent showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro bouncy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro crystal showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro eloquent showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro dashing showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro galactic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro foxy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro iron showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro lunar showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro jade showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro indigo showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro hydro showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro kinetic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro melodic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange

No version for distro noetic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

rcl_logging_implementation package from rcl_logging repo

rcl_logging_implementation rcl_logging_interface rcl_logging_noop rcl_logging_spdlog

ROS Distro
rolling

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

Provides the ability to load logging implementations at runtime. This package acts as an abstraction layer between rcl and the actual logging implementation (e.g., spdlog, noop, or custom implementations).

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_IMPLEMENTATION environment variable to select implementation
  • Fallback Default: Defaults to rcl_logging_spdlog if 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

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rcl_logging_implementation at Robotics Stack Exchange