@@ -31,6 +31,21 @@ fn init_metrics() {
31
31
global:: set_meter_provider ( provider) ;
32
32
}
33
33
34
+ #[ cfg( feature = "logs" ) ]
35
+ fn init_logs ( ) -> opentelemetry_sdk:: logs:: LoggerProvider {
36
+ use opentelemetry_appender_tracing:: layer;
37
+ use opentelemetry_sdk:: logs:: LoggerProvider ;
38
+ use tracing_subscriber:: prelude:: * ;
39
+
40
+ let exporter = opentelemetry_stdout:: LogExporter :: default ( ) ;
41
+ let provider: LoggerProvider = LoggerProvider :: builder ( )
42
+ . with_simple_exporter ( exporter)
43
+ . build ( ) ;
44
+ let layer = layer:: OpenTelemetryTracingBridge :: new ( & provider) ;
45
+ tracing_subscriber:: registry ( ) . with ( layer) . init ( ) ;
46
+ provider
47
+ }
48
+
34
49
#[ cfg( feature = "trace" ) ]
35
50
fn emit_span ( ) {
36
51
let tracer = global:: tracer ( "stdout-test" ) ;
@@ -50,6 +65,12 @@ fn emit_metrics() {
50
65
c. add ( 1 , & [ KeyValue :: new ( "test_key" , "test_value" ) ] ) ;
51
66
}
52
67
68
+ #[ cfg( feature = "logs" ) ]
69
+ fn emit_log ( ) {
70
+ use tracing:: error;
71
+ error ! ( name: "my-event-name" , target: "my-system" , event_id = 20 , user_name = "otel" , user_email = "otel@opentelemetry.io" ) ;
72
+ }
73
+
53
74
#[ tokio:: main]
54
75
async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
55
76
#[ cfg( feature = "trace" ) ]
@@ -58,9 +79,23 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
58
79
#[ cfg( feature = "metrics" ) ]
59
80
init_metrics ( ) ;
60
81
82
+ #[ cfg( feature = "logs" ) ]
83
+ let logger_provider = init_logs ( ) ;
84
+
85
+ #[ cfg( feature = "logs" ) ]
86
+ emit_log ( ) ;
87
+
88
+ println ! (
89
+ "======================================================================================"
90
+ ) ;
91
+
61
92
#[ cfg( feature = "trace" ) ]
62
93
emit_span ( ) ;
63
94
95
+ println ! (
96
+ "======================================================================================"
97
+ ) ;
98
+
64
99
#[ cfg( feature = "metrics" ) ]
65
100
emit_metrics ( ) ;
66
101
@@ -70,5 +105,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
70
105
#[ cfg( feature = "metrics" ) ]
71
106
global:: shutdown_meter_provider ( ) ;
72
107
108
+ #[ cfg( feature = "logs" ) ]
109
+ drop ( logger_provider) ;
110
+
73
111
Ok ( ( ) )
74
112
}
0 commit comments