pub struct MultiReporter { /* private fields */ }Expand description
A reporter that reports profiling results to several destinations.
If one of the destinations errors, it will continue reporting to the other ones.
§Example
Output to both S3 and a local directory:
let bucket_owner = "<your account id>";
let bucket_name = "<your bucket name>";
let profiling_group = "a-name-to-give-the-uploaded-data";
let path = PathBuf::from("path/to/write/jfrs");
let sdk_config = aws_config::defaults(BehaviorVersion::latest()).load().await;
let reporter = MultiReporter::new(vec![
Box::new(LocalReporter::new(path)),
Box::new(S3Reporter::new(S3ReporterConfig {
sdk_config: &sdk_config,
bucket_owner: bucket_owner.into(),
bucket_name: bucket_name.into(),
profiling_group_name: profiling_group.into(),
})),
]);
let profiler = ProfilerBuilder::default()
.with_reporter(reporter)
.build();
profiler.spawn()?;Implementations§
Trait Implementations§
Source§impl Debug for MultiReporter
impl Debug for MultiReporter
Source§impl Reporter for MultiReporter
impl Reporter for MultiReporter
Source§fn report<'life0, 'life1, 'async_trait>(
&'life0 self,
jfr: Vec<u8>,
metadata: &'life1 ReportMetadata<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn report<'life0, 'life1, 'async_trait>(
&'life0 self,
jfr: Vec<u8>,
metadata: &'life1 ReportMetadata<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Takes a profiling sample, including JFR data and sample metadata,
and uploads it towards a destination. Read more
Auto Trait Implementations§
impl Freeze for MultiReporter
impl !RefUnwindSafe for MultiReporter
impl Send for MultiReporter
impl Sync for MultiReporter
impl Unpin for MultiReporter
impl !UnwindSafe for MultiReporter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.