1- use log:: { Level , Log , Metadata , Record } ;
1+ use log:: { Log , Metadata , Record } ;
22use opentelemetry:: trace:: TracerProvider ;
3- use tracing:: { event, Level as TracingLevel } ;
43use tracing_subscriber:: layer:: SubscriberExt ;
54use tracing_subscriber:: Registry ;
5+ use tracing_log:: LogTracer ;
66
77const OTEL_SERVICE_NAME : & str = "cubestore" ;
88
@@ -26,46 +26,34 @@ pub fn init_tracing_telemetry() {
2626}
2727
2828pub struct OpenTelemetryLogger {
29- logger : Box < dyn Log > ,
29+ inner_logger : Box < dyn Log > ,
30+ otel_logger : Box < dyn Log > ,
3031}
3132
3233impl OpenTelemetryLogger {
3334 pub fn new ( logger : Box < dyn Log > ) -> Self {
34- Self { logger }
35+ Self {
36+ inner_logger : logger,
37+ otel_logger : Box :: new ( LogTracer :: new ( ) ) ,
38+ }
3539 }
3640}
3741
3842impl Log for OpenTelemetryLogger {
3943 fn enabled < ' a > ( & self , metadata : & Metadata < ' a > ) -> bool {
40- self . logger . enabled ( metadata)
44+ self . inner_logger . enabled ( metadata)
4145 }
4246
4347 fn log < ' a > ( & self , record : & Record < ' a > ) {
4448 if !self . enabled ( record. metadata ( ) ) {
4549 return ;
4650 }
47- self . logger . log ( & record) ;
48-
49- match record. metadata ( ) . level ( ) {
50- Level :: Error => {
51- event ! ( TracingLevel :: ERROR , "{}" , record. args( ) . to_string( ) ) ;
52- }
53- Level :: Warn => {
54- event ! ( TracingLevel :: WARN , "{}" , record. args( ) . to_string( ) ) ;
55- }
56- Level :: Info => {
57- event ! ( TracingLevel :: INFO , "{}" , record. args( ) . to_string( ) ) ;
58- }
59- Level :: Debug => {
60- event ! ( TracingLevel :: DEBUG , "{}" , record. args( ) . to_string( ) ) ;
61- }
62- Level :: Trace => {
63- event ! ( TracingLevel :: TRACE , "{}" , record. args( ) . to_string( ) ) ;
64- }
65- }
51+ self . inner_logger . log ( & record) ;
52+ self . otel_logger . log ( & record) ;
6653 }
6754
6855 fn flush ( & self ) {
69- self . logger . flush ( )
56+ self . inner_logger . flush ( ) ;
57+ self . otel_logger . flush ( ) ;
7058 }
7159}
0 commit comments