diff --git a/Cargo.toml b/Cargo.toml
index 92272fa..afcbeed 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,3 +10,7 @@ hyper = { version = "*", features = [ "http1", "http2", "server", "runtime", "tc
http = "*"
async-recursion = "*"
tokio = { version = "*", features = [ "full" ] }
+
+[dev-dependencies]
+log = "*"
+env_logger = "*"
diff --git a/examples/log.rs b/examples/log.rs
new file mode 100644
index 0000000..a77c307
--- /dev/null
+++ b/examples/log.rs
@@ -0,0 +1,34 @@
+use http::{Request, Response, StatusCode};
+use hyper::Body;
+use log::LevelFilter;
+use ratpack::{app::App, compose_handler, handler::Params, Error, HTTPResult, ServerError};
+
+async fn log(req: Request
, resp: Option>, _params: Params) -> HTTPResult {
+ log::trace!("New request: {}", req.uri().path());
+ Ok((req, resp))
+}
+
+async fn hello(req: Request, _resp: Option>, params: Params) -> HTTPResult {
+ let name = params.get("name").unwrap();
+ log::info!("Saying hello to {}", name);
+ let bytes = Body::from(format!("hello, {}!\n", name));
+
+ return Ok((
+ req,
+ Some(Response::builder().status(200).body(bytes).unwrap()),
+ ));
+}
+
+#[tokio::main]
+async fn main() -> Result<(), ServerError> {
+ let mut app = App::new();
+ env_logger::builder()
+ .target(env_logger::Target::Stderr)
+ .filter(None, LevelFilter::Trace)
+ .init();
+ app.get("/:name", compose_handler!(log, hello));
+
+ app.serve("127.0.0.1:3000").await?;
+
+ Ok(())
+}