Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | ros2 |
| Last Updated | 2026-05-31 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.5.0 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
- bag source (when loading from bag files)
log_viewer also supports text searches with three pattern modes (literal, regex, and template) and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need ROS to be running to start and will automatically connect/reconnect when it becomes available.
Loading from Bag Files
log_viewer can load logs directly from one or more rosbag2 bag files instead of subscribing to a live ROS topic:
ros2 run log_view log_viewer /path/to/bag [/path/to/bag2 ...]
In this mode no ROS subscription is created. All messages from the supplied bags are loaded before the viewer starts, sorted chronologically. The status bar shows the log count and the bag source(s) rather than the system time:
logs: 1234 from bag: /path/to/bag
When multiple bags are provided, a bag source filter panel (CTRL-b) becomes available. It lists each bag with
its message count and lets you toggle individual bags on or off to include or exclude their messages from the view.
Within the panel, pressing i inverts the selection and CTRL-a selects all bags.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the COLCON_PREFIX_PATH
environment variable set when a ROS 2 workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if COLCON_PREFIX_PATH is not set or does not point to
a valid directory.
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Pattern Syntax
Filter, exclude, and search inputs all support the same three matching modes:
| Mode | Syntax | Description |
|---|---|---|
| Literal | text |
Case-insensitive substring match (default) |
| Regex |
/pattern/ or /pattern/i
|
ECMAScript regular expression; add i flag for case-insensitive |
| Template | prefix {placeholder} suffix |
Fixed text with typed gaps |
Template placeholders:
| Placeholder | Description |
|---|---|
{*} or {}
|
Wildcard — any non-whitespace token |
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the 3-Clause BSD License, as dictated by that license.
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2026-05-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.1.4 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
log_viewer also supports text searches and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need roscore to start and will automatically connect/reconnect when it becomes available.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the CMAKE_PREFIX_PATH
environment variable set when a catkin workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if CMAKE_PREFIX_PATH is not set or points only at the
system ROS installation (i.e. no catkin workspace has been sourced).
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Keybindings
CTRL-c Exit log viewer
CTRL-h Show/hide help screen
Up Arrow Scroll up
Down Arrow Scroll down
Left Arrow Scroll left
Right Arrow Scroll right
Page Up Scroll up a screen
Page Down Scroll down a screen
Home Scroll to first message
End Scroll to last message and follow
Tab Change focus to next input
F1 Show/hide debug level
F2 Show/hide info level
F3 Show/hide warning level
F4 Show/hide error level
F5 Show/hide fatal level
F7 Enable/disable node filter
CTRL-a Select all log lines and copy to clipboard
CTRL-d Show/hide message details
CTRL-e Enable/disable text exclude filter
CTRL-f Enable/disable text include filter
CTRL-i Invert node selection
CTRL-k Show/hide preferences
CTRL-n Show/hide node selection
CTRL-r Clear message history
CTRL-s Search for matching string
Preferences
The preferences panel (CTRL-k) provides the following settings:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2026-05-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.1.4 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
log_viewer also supports text searches and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need roscore to start and will automatically connect/reconnect when it becomes available.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the CMAKE_PREFIX_PATH
environment variable set when a catkin workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if CMAKE_PREFIX_PATH is not set or points only at the
system ROS installation (i.e. no catkin workspace has been sourced).
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Keybindings
CTRL-c Exit log viewer
CTRL-h Show/hide help screen
Up Arrow Scroll up
Down Arrow Scroll down
Left Arrow Scroll left
Right Arrow Scroll right
Page Up Scroll up a screen
Page Down Scroll down a screen
Home Scroll to first message
End Scroll to last message and follow
Tab Change focus to next input
F1 Show/hide debug level
F2 Show/hide info level
F3 Show/hide warning level
F4 Show/hide error level
F5 Show/hide fatal level
F7 Enable/disable node filter
CTRL-a Select all log lines and copy to clipboard
CTRL-d Show/hide message details
CTRL-e Enable/disable text exclude filter
CTRL-f Enable/disable text include filter
CTRL-i Invert node selection
CTRL-k Show/hide preferences
CTRL-n Show/hide node selection
CTRL-r Clear message history
CTRL-s Search for matching string
Preferences
The preferences panel (CTRL-k) provides the following settings:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/hatchbed/log_view.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2026-05-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| log_view | 0.1.4 |
README
log_view
log_viewer is an ncurses text UI for viewing rosout logs.

Motivation
Receive, filter, and navigate through all published rosout log messages from within a terminal to support debugging a robot live.
Problem
Many rosout log messages don’t get printed to the terminal in the normal course when there are lots of nodes/messages. There is also not a convenient way to filter and navigate through them in real time.
swri_console provides most of the desired functionality very well, but is Qt based and requires a graphical interface.
Solution
log_viewer is very similar in concept and design to swri_console, but uses ncurses instead of Qt for the interface.
Log messages can be filtered based on:
- log level
- node
- whitelist text filter
- exclude text filter
log_viewer also supports text searches and jumping from match to match.
Log messages are copied to the clipboard by selecting them.
Like swri_console, log_viewer doesn’t need roscore to start and will automatically connect/reconnect when it becomes available.
Log Persistence
log_viewer can optionally persist log messages to disk and reload them on startup. This is useful for preserving log history across sessions.
Log files are stored under <workspace>/.log_view/ as timestamped text files
(log_view_YYYYMMDD_HHMMSS.log), where <workspace> is derived from the CMAKE_PREFIX_PATH
environment variable set when a catkin workspace is sourced. This keeps logs isolated per
workspace. The format is human-readable and can be inspected with standard tools such as cat,
grep, and less.
Persistence is automatically disabled if CMAKE_PREFIX_PATH is not set or points only at the
system ROS installation (i.e. no catkin workspace has been sourced).
Session boundaries are marked in the log with separator lines:
-------- Session Started At 2026-05-04 09:15:00 --------
-------- Recording Ended At 2026-05-04 09:47:23 --------
Log persistence is configured in the preferences panel (CTRL-k):
| Setting | Description |
|---|---|
| Persist Logs to Disk | Enable/disable saving and loading logs |
| Log Rotate Size | Start a new file after this size (1–100 MB) |
| Max Total Log Size | Delete oldest files to stay under this limit (10 MB–1 GB) |
Clearing the message history (CTRL-r) also deletes all persisted log files.
Keybindings
CTRL-c Exit log viewer
CTRL-h Show/hide help screen
Up Arrow Scroll up
Down Arrow Scroll down
Left Arrow Scroll left
Right Arrow Scroll right
Page Up Scroll up a screen
Page Down Scroll down a screen
Home Scroll to first message
End Scroll to last message and follow
Tab Change focus to next input
F1 Show/hide debug level
F2 Show/hide info level
F3 Show/hide warning level
F4 Show/hide error level
F5 Show/hide fatal level
F7 Enable/disable node filter
CTRL-a Select all log lines and copy to clipboard
CTRL-d Show/hide message details
CTRL-e Enable/disable text exclude filter
CTRL-f Enable/disable text include filter
CTRL-i Invert node selection
CTRL-k Show/hide preferences
CTRL-n Show/hide node selection
CTRL-r Clear message history
CTRL-s Search for matching string
Preferences
The preferences panel (CTRL-k) provides the following settings:
File truncated at 100 lines see the full file