Logging#
This module provides components for safety-critical logging (incl. DLT) in embedded automotive systems.
Overview#
score_logging delivers three distinct logging components:
mw::logis the logging middleware library.Applications use the frontend API owned by score_baselibs, while score_logging provides the concrete file, remote/DLT, and system recorder backend implementations.
datarouteris the DLT daemon executable.It reads records from source shared-memory ring buffers, manages source sessions, routes messages to configured channels via UDP multicast, and reports source statistics and message drops.
score_log_bridgeis a Rust library that implements thescore_logfacadeusing the C++
mw::logrecorder through a layout-checked FFI adapter.
Repository Layout#
The logging module includes the following top-level structure:
docs/: Documentation usingdocs-as-codeexamples/: Dash-tool license-checkquality/: integration-test (QEMU) environment configs and sanitizer suppression files (ASan/LSan/TSan/UBSan).score/mw/log/:mw::logrecorders and concrete backends and Rust bridgescore/datarouter/: DLT daemon and supporting librariesscore/test/: Component and Integration testsscripts/: developer-tooling helpersthird_party/: bazel wiring for external tooling depstools/: developer-tooling.github/workflows/: CI/CD pipelines
Architecture#
Components#
Quick Start#
To build the module:
bazel build //score/...
To run the supported test suites:
# Unit tests on the Linux host
bazel test --config=x86_64-linux --test_tag_filters=unit //score/...
# Component tests in Docker
bazel test --config=x86_64-linux --test_tag_filters=integration //score/test/component/...
# Integration tests on QNX/QEMU
bazel test --config=x86_64-qnx --test_tag_filters=integration //score/test/integration/...
Quality#
Existing tooling and the KPIs each one gates in CI (see .github/workflows/):
Static analysis —
clang-tidyon every C++ target;clippy/rustfmt(rustfmt.toml) for Rust.Sanitizers — ASan/UBSan/LSan/TSan runs per PR, suppressions are placed in
quality/sanitizer/.Code coverage — C++ line/branch coverage report, excluding integration-tagged tests.
Test suites — Google Test/Rust unit tests (Linux), component (Docker), and integration (QNX/QEMU) tests run separately.
License compliance — Dash license scan of C++/Rust dependencies.
Copyright & format — header and formatting checks on every change.