@@ -77,21 +77,21 @@ pub trait LogProcessor: Send + Sync + Debug {
77
77
/// debugging and testing. For scenarios requiring higher
78
78
/// performance/throughput, consider using [BatchLogProcessor].
79
79
#[ derive( Debug ) ]
80
- pub struct SimpleLogProcessor {
81
- exporter : Mutex < Box < dyn LogExporter > > ,
80
+ pub struct SimpleLogProcessor < T : LogExporter > {
81
+ exporter : Mutex < T > ,
82
82
is_shutdown : AtomicBool ,
83
83
}
84
84
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 {
87
87
SimpleLogProcessor {
88
88
exporter : Mutex :: new ( exporter) ,
89
89
is_shutdown : AtomicBool :: new ( false ) ,
90
90
}
91
91
}
92
92
}
93
93
94
- impl LogProcessor for SimpleLogProcessor {
94
+ impl < T : LogExporter > LogProcessor for SimpleLogProcessor < T > {
95
95
fn emit ( & self , record : & mut LogRecord , instrumentation : & InstrumentationScope ) {
96
96
// noop after shutdown
97
97
if self . is_shutdown . load ( std:: sync:: atomic:: Ordering :: Relaxed ) {
@@ -764,7 +764,7 @@ mod tests {
764
764
let exporter = MockLogExporter {
765
765
resource : Arc :: new ( Mutex :: new ( None ) ) ,
766
766
} ;
767
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
767
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
768
768
let _ = LoggerProvider :: builder ( )
769
769
. with_log_processor ( processor)
770
770
. with_resource ( Resource :: new ( vec ! [
@@ -832,7 +832,7 @@ mod tests {
832
832
let exporter = InMemoryLogExporterBuilder :: default ( )
833
833
. keep_records_on_shutdown ( )
834
834
. build ( ) ;
835
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
835
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
836
836
837
837
let mut record: LogRecord = Default :: default ( ) ;
838
838
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1013,7 +1013,7 @@ mod tests {
1013
1013
#[ test]
1014
1014
fn test_simple_processor_sync_exporter_without_runtime ( ) {
1015
1015
let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1016
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1016
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1017
1017
1018
1018
let mut record: LogRecord = Default :: default ( ) ;
1019
1019
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1026,7 +1026,7 @@ mod tests {
1026
1026
#[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
1027
1027
async fn test_simple_processor_sync_exporter_with_runtime ( ) {
1028
1028
let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1029
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1029
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1030
1030
1031
1031
let mut record: LogRecord = Default :: default ( ) ;
1032
1032
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1039,7 +1039,7 @@ mod tests {
1039
1039
#[ tokio:: test( flavor = "multi_thread" ) ]
1040
1040
async fn test_simple_processor_sync_exporter_with_multi_thread_runtime ( ) {
1041
1041
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 ( ) ) ) ;
1043
1043
1044
1044
let mut handles = vec ! [ ] ;
1045
1045
for _ in 0 ..10 {
@@ -1062,7 +1062,7 @@ mod tests {
1062
1062
#[ tokio:: test( flavor = "current_thread" ) ]
1063
1063
async fn test_simple_processor_sync_exporter_with_current_thread_runtime ( ) {
1064
1064
let exporter = InMemoryLogExporterBuilder :: default ( ) . build ( ) ;
1065
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1065
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1066
1066
1067
1067
let mut record: LogRecord = Default :: default ( ) ;
1068
1068
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1109,7 +1109,7 @@ mod tests {
1109
1109
// Use `catch_unwind` to catch the panic caused by missing Tokio runtime
1110
1110
let result = std:: panic:: catch_unwind ( || {
1111
1111
let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1112
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1112
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1113
1113
1114
1114
let mut record: LogRecord = Default :: default ( ) ;
1115
1115
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1158,7 +1158,7 @@ mod tests {
1158
1158
// tasks nor the exporter can proceed.
1159
1159
async fn test_simple_processor_async_exporter_with_all_runtime_worker_threads_blocked ( ) {
1160
1160
let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1161
- let processor = Arc :: new ( SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ) ;
1161
+ let processor = Arc :: new ( SimpleLogProcessor :: new ( exporter. clone ( ) ) ) ;
1162
1162
1163
1163
let concurrent_emit = 4 ; // number of worker threads
1164
1164
@@ -1189,7 +1189,7 @@ mod tests {
1189
1189
// tasks occupy the runtime.
1190
1190
async fn test_simple_processor_async_exporter_with_runtime ( ) {
1191
1191
let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1192
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1192
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1193
1193
1194
1194
let mut record: LogRecord = Default :: default ( ) ;
1195
1195
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1208,7 +1208,7 @@ mod tests {
1208
1208
async fn test_simple_processor_async_exporter_with_multi_thread_runtime ( ) {
1209
1209
let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1210
1210
1211
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1211
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1212
1212
1213
1213
let mut record: LogRecord = Default :: default ( ) ;
1214
1214
let instrumentation: InstrumentationScope = Default :: default ( ) ;
@@ -1228,7 +1228,7 @@ mod tests {
1228
1228
async fn test_simple_processor_async_exporter_with_current_thread_runtime ( ) {
1229
1229
let exporter = LogExporterThatRequiresTokio :: new ( ) ;
1230
1230
1231
- let processor = SimpleLogProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) ;
1231
+ let processor = SimpleLogProcessor :: new ( exporter. clone ( ) ) ;
1232
1232
1233
1233
let mut record: LogRecord = Default :: default ( ) ;
1234
1234
let instrumentation: InstrumentationScope = Default :: default ( ) ;
0 commit comments