Log Bridge Configuration

The ros2_medkit_log_bridge node turns /rosout messages into faults, so a node that only ever logged a problem still shows up in the fault list without being changed.

Overview

The bridge subscribes to /rosout, keeps the messages at or above a severity floor, derives a fault code from the logging node and the message, and reports it through the same ReportFault path any node would use.

Two things bound the volume. Messages at WARN pass through each node’s FaultReporter local filter, which debounces on a threshold and a window; ERROR and FATAL bypass that filter, so the bridge applies its own cooldown to those two levels instead. That cooldown is keyed by the generated fault code together with the severity, not by the node: a repeat of the same message is suppressed, while a different message from the same node is not, and an ERROR is never suppressed by an earlier WARN of the same text.

Parameters

log_bridge:
  ros__parameters:
    rosout_topic: "/rosout"
    severity_floor: 30          # WARN
    code_prefix: "LOG"
    exclude_nodes: []
    include_only_nodes: []
    max_tracked_nodes: 512
    report_cooldown_sec: 5.0
    exclude_medkit_stack: true

Parameter

Default

Description

rosout_topic

/rosout

Topic the bridge subscribes to.

severity_floor

30 (WARN)

Lowest rcutils log level that becomes a fault. Useful values are 30 WARN, 40 ERROR and 50 FATAL: DEBUG and INFO never become faults whatever this is set to, so 0, 10 and 20 all behave like 30. Raise it to 40 on chatty or constrained targets to cut volume. Out of range is clamped to [0, 50] with a warning, because the value is narrowed to a byte and would otherwise wrap into “let everything through”.

code_prefix

LOG

Prefix of every generated fault code. Normalized to upper snake case and truncated to 32 characters, so it cannot produce a code outside the [A-Z0-9_] charset medkit requires. An empty result falls back to LOG.

exclude_nodes

[]

Node names whose logs are ignored.

include_only_nodes

[]

When non-empty, only these nodes are considered.

max_tracked_nodes

512

How many distinct source nodes the bridge tracks. Bounds memory when node names are generated. Range: 1 to 2147483647 (the value becomes an int); either end is clamped with a warning.

report_cooldown_sec

5.0

Minimum gap between two reports carrying the same generated fault code at the same severity. Applies to ERROR and FATAL only, because WARN is already debounced by the reporter-side local filter and cooling it here would starve that filter’s threshold counting. 0 disables the cooldown. Must be finite and not negative; anything else is refused with a warning and 5.0 is used, because a non-finite value would otherwise reach the duration the window is built from.

exclude_medkit_stack

true

Ignore logs from medkit’s own nodes, so the diagnostics stack does not report on itself.

See Also