2 stable releases
1.0.1 | Apr 14, 2022 |
---|
#1501 in Rust patterns
43 downloads per month
52KB
241 lines
Automatic Crash Reporting for Rust
crashreport
is a set & forget crate that appends a button to your application's panic messages allowing users to quickly report basic diagnostic information back to you.
Usage
Firstly, this crate relies on you setting the repository
key in your Cargo.toml
file. When using crashreport
, your Cargo.toml
could end up looking something like this:
[package]
name = "my-awesome-crate"
version = "0.1.0"
repository = "https://github.com/ewpratten/my-awesome-crate"
[dependencies]
crashreport = "^1.0.0"
# If you never want terminal colors, import the crate like this instead:
crashreport = { version = "^1.0.0", default-features = false }
On the code side, simply use our crashreport!
macro to add a button to your panic messages globally:
#[macro_use]
extern crate crashreport;
pub fn main() {
// The important bit :)
crashreport!();
// ... do stuff
// Your panics are now a little fancier!
panic!("This is a panic!");
}
A bit about the internals
crashreport
works by appending a new function to the end of whatever your existing panic handler is. Don't worry, you can keep your fancy custom handlers if you want. Just initialize them before calling crashreport!
.
Git provider resolution
As of now, we support the following hosted Git services:
- GitHub
- GitLab
If you happen to be using a self-hosted version of any of these services, crashreport
will not pick it up automatically. Instead, enable one of the following features to force override provider resolution:
assume_github
assume_gitlab
Enabling more than one of these features will result in the first being used
Terminal URLs
Whenever possible, crashreport
will try to make clickable buttons in your terminal. The work of deciding weather the terminal supports this is carried out by the supports-hyperlinks
crate. If issues arise, please open an issue over there to add support.
Worst case, you can force-disable button creation (falling back on printing out a URL) by setting FORCE_HYPERLINK=0
in your environment.
Dependencies
~1–11MB
~102K SLoC