@@ -21,6 +21,10 @@ use hyper::{
2121 Body , Client , Method , Request , Response , Server , StatusCode ,
2222} ;
2323use skywalking:: {
24+ logging:: {
25+ logger:: { self , Logger } ,
26+ record:: { LogRecord , RecordType } ,
27+ } ,
2428 reporter:: grpc:: GrpcReporter ,
2529 trace:: {
2630 propagation:: {
@@ -30,7 +34,7 @@ use skywalking::{
3034 tracer:: { self , Tracer } ,
3135 } ,
3236} ;
33- use std:: { convert:: Infallible , error:: Error , future , net:: SocketAddr } ;
37+ use std:: { convert:: Infallible , error:: Error , net:: SocketAddr } ;
3438use structopt:: StructOpt ;
3539
3640static NOT_FOUND_MSG : & str = "not found" ;
@@ -40,10 +44,18 @@ async fn handle_ping(
4044 _req : Request < Body > ,
4145 client : Client < HttpConnector > ,
4246) -> Result < Response < Body > , Infallible > {
47+ logger:: log (
48+ LogRecord :: new ( )
49+ . add_tag ( "level" , "DEBUG" )
50+ . endpoint ( "/ping" )
51+ . record_type ( RecordType :: Json )
52+ . content ( r#"{"message": "handle ping"}"# ) ,
53+ ) ;
54+
4355 let mut context = tracer:: create_trace_context ( ) ;
4456 let _span = context. create_entry_span ( "/ping" ) ;
4557 {
46- let _span2 = context. create_exit_span ( "/pong" , "consumer:8082" ) ;
58+ let span2 = context. create_exit_span ( "/pong" , "consumer:8082" ) ;
4759 let header = encode_propagation ( & context, "/pong" , "consumer:8082" ) ;
4860 let req = Request :: builder ( )
4961 . method ( Method :: GET )
@@ -52,6 +64,15 @@ async fn handle_ping(
5264 . body ( Body :: from ( "" ) )
5365 . unwrap ( ) ;
5466
67+ logger:: log (
68+ LogRecord :: new ( )
69+ . add_tag ( "level" , "INFO" )
70+ . endpoint ( "/ping" )
71+ . with_tracing_context ( & context)
72+ . with_span ( & span2)
73+ . record_type ( RecordType :: Text )
74+ . content ( "do http request" ) ,
75+ ) ;
5576 client. request ( req) . await . unwrap ( ) ;
5677 }
5778 {
@@ -106,6 +127,14 @@ async fn run_producer_service(host: [u8; 4]) {
106127}
107128
108129async fn handle_pong ( _req : Request < Body > ) -> Result < Response < Body > , Infallible > {
130+ logger:: log (
131+ LogRecord :: new ( )
132+ . add_tag ( "level" , "DEBUG" )
133+ . endpoint ( "/pong" )
134+ . record_type ( RecordType :: Json )
135+ . content ( r#"{"message": "handle pong"}"# ) ,
136+ ) ;
137+
109138 let ctx = decode_propagation (
110139 _req. headers ( ) [ SKYWALKING_HTTP_CONTEXT_HEADER_KEY ]
111140 . to_str ( )
@@ -154,20 +183,19 @@ struct Opt {
154183async fn main ( ) -> Result < ( ) , Box < dyn Error > > {
155184 let opt = Opt :: from_args ( ) ;
156185 let reporter = GrpcReporter :: connect ( "http://collector:19876" ) . await ?;
186+ let handle = reporter. reporting ( ) . await . spawn ( ) ;
157187
158- let handle = if opt. mode == "consumer" {
159- tracer:: set_global_tracer ( Tracer :: new ( "consumer" , "node_0" , reporter) ) ;
160- let handle = tracer :: reporting ( future :: pending ( ) ) ;
188+ if opt. mode == "consumer" {
189+ tracer:: set_global_tracer ( Tracer :: new ( "consumer" , "node_0" , reporter. clone ( ) ) ) ;
190+ logger :: set_global_logger ( Logger :: new ( "consumer" , "node_0" , reporter ) ) ;
161191 run_consumer_service ( [ 0 , 0 , 0 , 0 ] ) . await ;
162- handle
163192 } else if opt. mode == "producer" {
164- tracer:: set_global_tracer ( Tracer :: new ( "producer" , "node_0" , reporter) ) ;
165- let handle = tracer :: reporting ( future :: pending ( ) ) ;
193+ tracer:: set_global_tracer ( Tracer :: new ( "producer" , "node_0" , reporter. clone ( ) ) ) ;
194+ logger :: set_global_logger ( Logger :: new ( "producer" , "node_0" , reporter ) ) ;
166195 run_producer_service ( [ 0 , 0 , 0 , 0 ] ) . await ;
167- handle
168196 } else {
169197 unreachable ! ( )
170- } ;
198+ }
171199
172200 handle. await ?;
173201
0 commit comments