sentry 0.2.0

Sentry (getsentry.com) client for rust ;)
Documentation

Rust Sentry Lib

Build Status Crates.io Coverage Status

Sentry Service now available for rust ;)

Rust 1.10 should include register_panic_handler and btw bring more value to this lib ;) This implementation use one thread listening incoming messages from dedicated channel and sending those messages to sentry server. If this thread panics, a new one is created.

Usage

Add this to your Cargo.toml:

[dependencies]
sentry = "0.2.0"

and this to your crate root:

extern crate sentry;

Examples

let credential = SentryCredential { key: "xx".to_string(), secret: "xx".to_string(), host: "app.getsentry.com".to_string(), project_id: "xx".to_string() };
let sentry = Sentry::new( "Server Name".to_string(), "release".to_string(), "test_env".to_string(), credential );
sentry.info("test.logger", "Test Message", None);

alternatively, you can specify optional settings such as device information

let credential = SentryCredential { key: "xx".to_string(), secret: "xx".to_string(), host: "app.getsentry.com".to_string(), project_id: "xx".to_string() };
let device = Device::new("device_name".to_string(), "version".to_string(), "build".to_string());
let settings = Settings {
    device: device,
    ..Settings::default()
};
let sentry = Sentry::from_settings(settings, credential);
sentry.info("test.logger", "Test Message", None);

you can also create credentials by parsing a full sentry dsn string:

let credential: SentryCredential = "https://mypublickey:myprivatekey@mysentryhost/myprojectid".parse().unwrap();
let sentry = Sentry::new( "Server Name".to_string(), "release".to_string(), "test_env".to_string(), credential );
sentry.info("test.logger", "Test Message", None);

you can share sentry accross threads

let sentry = Arc::new(Sentry::new( "Server Name".to_string(), "release".to_string(), "test_env".to_string(), credential ));
let sentry1 = sentry.clone();
thread::spawn(move || sentry1.info("test.logger", "Test Message", None));

with rust 1.10 or nightly you can register panic handler and still provide you own handler

sentry.register_panic_handler(Some(|panic_info: &PanicInfo| -> () {}));
sentry.unregister_panic_handler();

OpenSSL

Check OpenSSL setup for OSX if you have some issue while building OpenSSL.

License

Licensed under either of

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 dual licensed as above, without any additional terms or conditions.