|
4 | 4 | //! style="width: 260px"></a> |
5 | 5 | //! </p> |
6 | 6 | //! |
7 | | -//! This crate provides support for logging events and errors / panics to |
8 | | -//! the [Sentry](https://sentry.io/) error logging service. It integrates with |
9 | | -//! the standard panic system in Rust as well as a few popular error handling |
10 | | -//! setups. |
| 7 | +//! This crate provides support for logging events and errors / panics to the |
| 8 | +//! [Sentry](https://sentry.io/) error logging service. It integrates with the standard panic |
| 9 | +//! system in Rust as well as a few popular error handling setups. |
11 | 10 | //! |
12 | 11 | //! # Quickstart |
13 | 12 | //! |
14 | | -//! To use the crate you need to create a client first. When a client is created |
15 | | -//! it's typically bound to the current thread by calling `bind_client`. By default |
16 | | -//! this happens by using the `sentry::init` convenience function. When the client |
17 | | -//! is bound to the main thread it also becomes the default client for future |
18 | | -//! threads created but it is always possible to override the client for a thread |
19 | | -//! later by explicitly binding it. |
| 13 | +//! To use the crate you need to create a client first. When a client is created it's typically |
| 14 | +//! bound to the current thread by calling `bind_client`. By default this happens by using the |
| 15 | +//! `sentry::init` convenience function. When the client is bound to the main thread it also |
| 16 | +//! becomes the default client for future threads created but it is always possible to override the |
| 17 | +//! client for a thread later by explicitly binding it. |
20 | 18 | //! |
21 | | -//! The `sentry::init` function returns a guard that when dropped will flush |
22 | | -//! Events that were not yet sent to the sentry service. It has a two second |
23 | | -//! deadline for this so shutdown of applications might slightly delay as a result |
24 | | -//! of this. Keep the guard around or sending events will not work. |
| 19 | +//! The `sentry::init` function returns a guard that when dropped will flush Events that were not |
| 20 | +//! yet sent to the sentry service. It has a two second deadline for this so shutdown of |
| 21 | +//! applications might slightly delay as a result of this. Keep the guard around or sending events |
| 22 | +//! will not work. |
25 | 23 | //! |
26 | 24 | //! ``` |
27 | 25 | //! let _guard = sentry::init("https://key@sentry.io/42"); |
|
32 | 30 | //! |
33 | 31 | //! # Integrations |
34 | 32 | //! |
35 | | -//! What makes this crate useful are the various integrations that exist. Some |
36 | | -//! of them are enabled by default, some uncommon ones or for deprecated parts of |
37 | | -//! the ecosystem a feature flag needs to be enabled. For the available |
38 | | -//! integrations and how to use them see [integrations](integrations/index.html). |
| 33 | +//! What makes this crate useful are the various integrations that exist. Some of them are enabled |
| 34 | +//! by default, some uncommon ones or for deprecated parts of the ecosystem a feature flag needs to |
| 35 | +//! be enabled. For the available integrations and how to use them see |
| 36 | +//! [integrations](integrations/index.html). |
39 | 37 | //! |
40 | 38 | //! # Scopes, Threads and Hubs |
41 | 39 | //! |
42 | | -//! Data is typically bound to a [`Scope`](struct.Scope.html). Scopes are stored |
43 | | -//! in a hidden stack on a [`Hub`](struct.Hub.html). Once the library has been |
44 | | -//! initialized a hub is automatically available. In the default config a new |
45 | | -//! hub is created for each thread and they act independently. |
| 40 | +//! Data is typically bound to a [`Scope`](struct.Scope.html). Scopes are stored in a hidden stack |
| 41 | +//! on a [`Hub`](struct.Hub.html). Once the library has been initialized a hub is automatically |
| 42 | +//! available. In the default config a new hub is created for each thread and they act |
| 43 | +//! independently. |
46 | 44 | //! |
47 | | -//! The thread that calls `sentry::init` initializes the first hub which then automatically |
48 | | -//! becomes the base of new hubs (You can get that hub by calling `Hub::main()`). If a |
49 | | -//! new thread is spawned it gets a new hub based on that one (the thread calls |
50 | | -//! `Hub::new_from_top(Hub::main())`). The current thread's hub is returned from |
51 | | -//! `Hub::current()`. Any hub that is wrapped in an `Arc` can be temporarily bound to a |
52 | | -//! thread with `Hub::run`. For more information see [`Hub`](struct.Hub.html). |
| 45 | +//! The thread that calls `sentry::init` initializes the first hub which then automatically becomes |
| 46 | +//! the base of new hubs (You can get that hub by calling `Hub::main()`). If a new thread is |
| 47 | +//! spawned it gets a new hub based on that one (the thread calls `Hub::new_from_top(Hub::main())`). |
| 48 | +//! The current thread's hub is returned from `Hub::current()`. Any hub that is wrapped in an `Arc` |
| 49 | +//! can be temporarily bound to a thread with `Hub::run`. For more information see |
| 50 | +//! [`Hub`](struct.Hub.html). |
53 | 51 | //! |
54 | | -//! Users are expected to reconfigure the scope with |
55 | | -//! [`configure_scope`](fn.configure_scope.html). For more elaborate scope management |
56 | | -//! the hub needs to be interfaced with directly. |
| 52 | +//! Users are expected to reconfigure the scope with [`configure_scope`](fn.configure_scope.html). |
| 53 | +//! For more elaborate scope management the hub needs to be interfaced with directly. |
57 | 54 | //! |
58 | | -//! In some situations (particularly in async code) it's often not possible to use |
59 | | -//! the thread local hub. In that case a hub can be explicitly created and passed |
60 | | -//! around. However due to the nature of some integrations some functionality like |
61 | | -//! automatic breadcrumb recording depends on the thread local hub being correctly |
62 | | -//! configured. |
| 55 | +//! In some situations (particularly in async code) it's often not possible to use the thread local |
| 56 | +//! hub. In that case a hub can be explicitly created and passed around. However due to the nature |
| 57 | +//! of some integrations some functionality like automatic breadcrumb recording depends on the |
| 58 | +//! thread local hub being correctly configured. |
63 | 59 | //! |
64 | 60 | //! # Minimal API |
65 | 61 | //! |
66 | | -//! This crate can also be used in "minimal" mode. This is enabled by disabling all |
67 | | -//! default features of the crate. In that mode a minimal API set is retained that |
68 | | -//! can be used to instrument code for Sentry without actually using Sentry. The |
69 | | -//! minimal API is a small set of APIs that dispatch to the underlying implementations on |
70 | | -//! the configured Sentry client. If the client is not there the minimal API will blackhole |
71 | | -//! a lot of operations. |
| 62 | +//! This crate can also be used in "minimal" mode. This is enabled by disabling all default |
| 63 | +//! features of the crate. In that mode a minimal API set is retained that can be used to |
| 64 | +//! instrument code for Sentry without actually using Sentry. The minimal API is a small set of |
| 65 | +//! APIs that dispatch to the underlying implementations on the configured Sentry client. If the |
| 66 | +//! client is not there the minimal API will blackhole a lot of operations. |
72 | 67 | //! |
73 | 68 | //! Only if a user then also uses and configures Sentry this code becomes used. |
74 | 69 | //! |
75 | | -//! In minimal mode some types are restricted in functionality. For instance the |
76 | | -//! `Client` is not available and the `Hub` does not retain all API functionality. |
77 | | -//! To see what the APIs in mnimal mode look like you can build the docs for this |
78 | | -//! crate without any features enabled. |
| 70 | +//! In minimal mode some types are restricted in functionality. For instance the `Client` is not |
| 71 | +//! available and the `Hub` does not retain all API functionality. To see what the APIs in mnimal |
| 72 | +//! mode look like you can build the docs for this crate without any features enabled. |
79 | 73 | //! |
80 | 74 | //! # Features |
81 | 75 | //! |
82 | | -//! Functionality of the crate can be turned on and off by feature flags. This is the |
83 | | -//! current list of feature flags: |
84 | | -//! |
85 | | -//! default flags: |
86 | | -//! |
87 | | -//! * `with_client_implementation`: turns on the real client implementation. |
88 | | -//! * `with_default_transport`: compiles in the default HTTP transport. |
89 | | -//! * `with_backtrace`: enables backtrace support (automatically turned on in a few cases) |
90 | | -//! * `with_panic`: enables the panic integration |
91 | | -//! * `with_failure`: enables the `failure` integration |
92 | | -//! * `with_log`: enables the `log` integration |
93 | | -//! * `with_env_logger`: enables the `env_logger` integration |
94 | | -//! * `with_device_info`: enables the device info context |
95 | | -//! * `with_rust_info`: enables the rust compiler info context |
96 | | -//! * `with_debug_meta`: enables debug meta support (permits server side symbolication) |
97 | | -//! * `with_debug_to_log`: when enabled sentry will debug log to a debug log at all times |
98 | | -//! instead of printing to stderr when debug is enabled on the hub. |
99 | | -//! |
100 | | -//! additional features: |
101 | | -//! |
102 | | -//! * `with_error_chain`: enables the error-chain integration |
103 | | -//! * `with_test_support`: enables the test support module |
104 | | -//! * `with_reqwest_transport`: enables the reqwest transport explicitly. This |
105 | | -//! is currently the default transport. |
106 | | -//! * `with_curl_transport`: enables the curl transport. |
| 76 | +//! Functionality of the crate can be turned on and off by feature flags. This is the current list |
| 77 | +//! of feature flags: |
| 78 | +//! |
| 79 | +//! Default features: |
| 80 | +//! |
| 81 | +//! * `with_client_implementation`: Turns on the real client implementation. |
| 82 | +//! * `with_default_transport`: Compiles in the default HTTP transport (see below). |
| 83 | +//! * `with_backtrace`: Enables backtrace support (automatically turned on in a few cases). |
| 84 | +//! * `with_panic`: Enables the panic integration. |
| 85 | +//! * `with_failure`: Enables the `failure` integration. |
| 86 | +//! * `with_device_info`: Enables the device info context. |
| 87 | +//! * `with_rust_info`: Enables the rust compiler info context instead of printing to stderr when |
| 88 | +//! debug is enabled on the hub. |
| 89 | +//! |
| 90 | +//! Additional context: |
| 91 | +//! |
| 92 | +//! * `with_debug_meta`: Adds debug meta to reported events (permits server side symbolication). |
| 93 | +//! |
| 94 | +//! Additional integrations: |
| 95 | +//! |
| 96 | +//! * `with_log`: Enables the `log` integration. |
| 97 | +//! * `with_env_logger`: Enables the `env_logger` integration. |
| 98 | +//! * `with_debug_to_log`: When enabled sentry will debug log to a debug log at all times. |
| 99 | +//! * `with_error_chain`: Enables the error-chain integration. |
| 100 | +//! |
| 101 | +//! Additional transports: |
| 102 | +//! * `with_reqwest_transport`: Enables the reqwest transport explicitly. This is currently the |
| 103 | +//! default transport. |
| 104 | +//! * `with_curl_transport`: Enables the curl transport. |
| 105 | +//! * `with_rustls`: Enables the `rustls` TLS implementation. This is currently the default when |
| 106 | +//! using the `with_reqwest_transport` feature. |
| 107 | +//! * `with_native_tls`: Enables the `default-tls` feature of the `reqwest` library. |
| 108 | +//! |
| 109 | +//! Testing: |
| 110 | +//! |
| 111 | +//! * `with_test_support`: Enables the test support module. |
107 | 112 | #![warn(missing_docs)] |
108 | 113 |
|
109 | 114 | #[macro_use] |
|
0 commit comments