@@ -77,21 +77,21 @@ pub trait LogProcessor: Send + Sync + Debug {
7777/// debugging and testing. For scenarios requiring higher
7878/// performance/throughput, consider using [BatchLogProcessor].
7979#[ derive( Debug ) ]
80- pub struct SimpleLogProcessor {
81- exporter : Mutex < Box < dyn LogExporter > > ,
80+ pub struct SimpleLogProcessor < T : LogExporter > {
81+ exporter : Mutex < T > ,
8282 is_shutdown : AtomicBool ,
8383}
8484
85- impl SimpleLogProcessor {
86- pub ( crate ) fn new ( exporter : Box < dyn LogExporter > ) -> Self {
85+ impl < T : LogExporter > SimpleLogProcessor < T > {
86+ pub ( crate ) fn new ( exporter : T ) -> Self {
8787 SimpleLogProcessor {
8888 exporter : Mutex :: new ( exporter) ,
8989 is_shutdown : AtomicBool :: new ( false ) ,
9090 }
9191 }
9292}
9393
94- impl LogProcessor for SimpleLogProcessor {
94+ impl < T : LogExporter > LogProcessor for SimpleLogProcessor < T > {
9595 fn emit ( & self , record : & mut LogRecord , instrumentation : & InstrumentationScope ) {
9696 // noop after shutdown
9797 if self . is_shutdown . load ( std:: sync:: atomic:: Ordering :: Relaxed ) {
@@ -764,7 +764,7 @@ mod tests {
764764 let exporter = MockLogExporter {
765765 resource : Arc :: new ( Mutex :: new ( None ) ) ,
766766 } ;
767- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
767+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
768768 let _ = LoggerProvider :: builder ( )
769769 . with_log_processor ( processor)
770770 . with_resource ( Resource :: new ( vec ! [
@@ -832,7 +832,7 @@ mod tests {
832832 let exporter = InMemoryLogExporterBuilder :: default ( )
833833 . keep_records_on_shutdown ( )
834834 . build ( ) ;
835- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
835+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
836836
837837 let mut record: LogRecord = Default :: default ( ) ;
838838 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1013,7 +1013,7 @@ mod tests {
10131013 #[ test]
10141014 fn test_simple_processor_sync_exporter_without_runtime ( ) {
10151015 let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1016- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1016+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
10171017
10181018 let mut record: LogRecord = Default :: default ( ) ;
10191019 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1026,7 +1026,7 @@ mod tests {
10261026 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
10271027 async fn test_simple_processor_sync_exporter_with_runtime ( ) {
10281028 let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1029- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1029+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
10301030
10311031 let mut record: LogRecord = Default :: default ( ) ;
10321032 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1039,7 +1039,7 @@ mod tests {
10391039 #[ tokio:: test( flavor = "multi_thread" ) ]
10401040 async fn test_simple_processor_sync_exporter_with_multi_thread_runtime ( ) {
10411041 let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1042- let processor = Arc :: new ( SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ) ;
1042+ let processor = Arc :: new ( SimpleLogProcessor :: new ( exporter. clone ( ) ) ) ;
10431043
10441044 let mut handles = vec ! [ ] ;
10451045 for _ in 0 ..10 {
@@ -1062,7 +1062,7 @@ mod tests {
10621062 #[ tokio:: test( flavor = "current_thread" ) ]
10631063 async fn test_simple_processor_sync_exporter_with_current_thread_runtime ( ) {
10641064 let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1065- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1065+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
10661066
10671067 let mut record: LogRecord = Default :: default ( ) ;
10681068 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1109,7 +1109,7 @@ mod tests {
11091109 // Use `catch_unwind` to catch the panic caused by missing Tokio runtime
11101110 let result = std:: panic:: catch_unwind ( || {
11111111 let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1112- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1112+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
11131113
11141114 let mut record: LogRecord = Default :: default ( ) ;
11151115 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1158,7 +1158,7 @@ mod tests {
11581158 // tasks nor the exporter can proceed.
11591159 async fn test_simple_processor_async_exporter_with_all_runtime_worker_threads_blocked ( ) {
11601160 let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1161- let processor = Arc :: new ( SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ) ;
1161+ let processor = Arc :: new ( SimpleLogProcessor :: new ( exporter. clone ( ) ) ) ;
11621162
11631163 let concurrent_emit = 4 ; // number of worker threads
11641164
@@ -1189,7 +1189,7 @@ mod tests {
11891189 // tasks occupy the runtime.
11901190 async fn test_simple_processor_async_exporter_with_runtime ( ) {
11911191 let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1192- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1192+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
11931193
11941194 let mut record: LogRecord = Default :: default ( ) ;
11951195 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1208,7 +1208,7 @@ mod tests {
12081208 async fn test_simple_processor_async_exporter_with_multi_thread_runtime ( ) {
12091209 let exporter = LogExporterThatRequiresTokio :: new ( ) ;
12101210
1211- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1211+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
12121212
12131213 let mut record: LogRecord = Default :: default ( ) ;
12141214 let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1228,7 +1228,7 @@ mod tests {
12281228 async fn test_simple_processor_async_exporter_with_current_thread_runtime ( ) {
12291229 let exporter = LogExporterThatRequiresTokio :: new ( ) ;
12301230
1231- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1231+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
12321232
12331233 let mut record: LogRecord = Default :: default ( ) ;
12341234 let instrumentation: InstrumentationScope = Default :: default ( ) ;
0 commit comments