mirror of
https://github.com/tokio-rs/tracing.git
synced 2025-10-02 07:20:35 +00:00
improve span structure in hyper-echo example
This commit is contained in:
parent
9de9eab1d7
commit
bff434aa24
@ -14,3 +14,4 @@ hyper = "0.12"
|
|||||||
futures = "0.1"
|
futures = "0.1"
|
||||||
ansi_term = "0.11"
|
ansi_term = "0.11"
|
||||||
humantime = "1.1.1"
|
humantime = "1.1.1"
|
||||||
|
tokio = "0.1"
|
||||||
|
@ -3,11 +3,13 @@ extern crate hyper;
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate tokio_trace;
|
extern crate tokio_trace;
|
||||||
extern crate tokio_trace_env_logger;
|
extern crate tokio_trace_env_logger;
|
||||||
|
extern crate tokio;
|
||||||
|
|
||||||
use futures::future;
|
use futures::future;
|
||||||
use hyper::rt::{Future, Stream};
|
use hyper::rt::{Future, Stream};
|
||||||
use hyper::service::service_fn;
|
use hyper::service::service_fn;
|
||||||
use hyper::{Body, Method, Request, Response, Server, StatusCode};
|
use hyper::{Body, Method, Request, Response, Server, StatusCode};
|
||||||
|
use hyper::server::conn::Http;
|
||||||
|
|
||||||
#[path = "../../tokio-trace/examples/sloggish/sloggish_subscriber.rs"]
|
#[path = "../../tokio-trace/examples/sloggish/sloggish_subscriber.rs"]
|
||||||
mod sloggish;
|
mod sloggish;
|
||||||
@ -98,17 +100,25 @@ fn main() {
|
|||||||
tokio_trace_env_logger::try_init().expect("init log adapter");
|
tokio_trace_env_logger::try_init().expect("init log adapter");
|
||||||
|
|
||||||
let addr: ::std::net::SocketAddr = ([127, 0, 0, 1], 3000).into();
|
let addr: ::std::net::SocketAddr = ([127, 0, 0, 1], 3000).into();
|
||||||
let server_span = span!(
|
let server_span = span!("server", local = addr);
|
||||||
"server",
|
|
||||||
local_addr = addr.ip(),
|
|
||||||
local_port = addr.port()
|
|
||||||
);
|
|
||||||
server_span.clone().enter(|| {
|
server_span.clone().enter(|| {
|
||||||
let span2 = server_span.clone();
|
let server = tokio::net::TcpListener::bind(&addr)
|
||||||
let server = Server::bind(&addr)
|
.expect("bind")
|
||||||
.serve(move || span2.clone().enter(|| service_fn(echo)))
|
.incoming()
|
||||||
.map_err(|e| event!(Level::Error, { error = e }, "server error"));
|
.fold(Http::new(), move |http, sock| {
|
||||||
|
|
||||||
|
let span = span!("connection", remote = sock.peer_addr().unwrap());
|
||||||
|
hyper::rt::spawn(http.serve_connection(sock, service_fn(echo))
|
||||||
|
.map_err(|e| { event!(Level::Error, { error = &e }, "serve error"); })
|
||||||
|
.instrument(span));
|
||||||
|
Ok::<_, ::std::io::Error>(http)
|
||||||
|
|
||||||
|
})
|
||||||
|
.instrument(server_span)
|
||||||
|
.map(|_|())
|
||||||
|
.map_err(|e| { event!(Level::Error, { error = &e }, "server error"); })
|
||||||
|
;
|
||||||
event!(Level::Info, {}, "listening...");
|
event!(Level::Info, {}, "listening...");
|
||||||
hyper::rt::run(server.instrument(server_span));
|
hyper::rt::run(server);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user