Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/knurling-rs/defmt
Efficient, deferred formatting for logging on embedded systems
https://github.com/knurling-rs/defmt
embedded-systems ferrous-systems logging rust rust-tools
Last synced: 9 days ago
JSON representation
Efficient, deferred formatting for logging on embedded systems
- Host: GitHub
- URL: https://github.com/knurling-rs/defmt
- Owner: knurling-rs
- License: apache-2.0
- Created: 2020-07-24T16:04:15.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-16T02:36:47.000Z (20 days ago)
- Last Synced: 2024-10-17T15:46:39.307Z (18 days ago)
- Topics: embedded-systems, ferrous-systems, logging, rust, rust-tools
- Language: Rust
- Homepage: https://defmt.ferrous-systems.com/
- Size: 2.56 MB
- Stars: 825
- Watchers: 11
- Forks: 76
- Open Issues: 84
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE-APACHE
Awesome Lists containing this project
- rust-embedded - defmt - constrained devices, like microcontrollers. (Tools / Paid and commercially available materials)
- awesome-embedded-rust - defmt - constrained devices, like microcontrollers. (Tools / Paid and commercially available materials)
README
# `defmt`
`defmt` ("de format", short for "deferred formatting") is a highly efficient logging framework that targets resource-constrained devices, like microcontrollers.
For more details about the framework check the book at .
The git version of the defmt book can be viewed at .
## Setup
### New project
The fastest way to get started with `defmt` is to use our [app-template] to set up a new Cortex-M embedded project.
[app-template]: https://github.com/knurling-rs/app-template
### Existing project
To include `defmt` in your existing project, follow our [Application Setup guide].
[Application Setup guide]: https://defmt.ferrous-systems.com/setup.html
## MSRV
`defmt` always compiles on the [latest `stable` rust release](https://github.com/rust-lang/rust/releases/latest). This is enforced by our CI building and testing against this version.It still might work on older rust versions, but this isn't ensured.
## defmt ecosystem
The following diagram illustrates the user-facing and internal crates of the defmt framework.
![defmt crates structure](assets/defmt.png)
## Developer Information
### Running Tests
Tests are run using `cargo xtask` -- although this is simply an alias (defined in `.cargo/config.toml`) for `cargo run --package xtask --`.
To see a list of options, see [`xtask/src/main.rs`](xtask/src/main.rs), or run:
```console
$ cargo xtask help
```For example, to run all the tests, run:
```console
$ cargo xtask test-all
```You will need `qemu-system-arm` installed and in your `$PATH` for some of the tests (e.g. `test-snapshot`).
## Support
`defmt` is part of the [Knurling] project, [Ferrous Systems]' effort at
improving tooling used to develop for embedded systems.If you think that our work is useful, consider sponsoring it via [GitHub
Sponsors].## License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
licensed as above, without any additional terms or conditions.[Knurling]: https://knurling.ferrous-systems.com/
[Ferrous Systems]: https://ferrous-systems.com/
[GitHub Sponsors]: https://github.com/sponsors/knurling-rs