Skip to content

Commit 273c1e8

Browse files
authored
Merge pull request #451 from http-rs/log
Adds log submodule
2 parents c1fb3cf + d9d7020 commit 273c1e8

File tree

9 files changed

+52
-19
lines changed

9 files changed

+52
-19
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ unstable = []
3232
http-types = "1.0.1"
3333
http-service = "0.5.0"
3434
http-service-h1 = { version = "0.1.0", optional = true }
35-
log = "0.4.8"
3635
route-recognizer = "0.1.13"
3736
serde = "1.0.102"
3837
serde_json = "1.0.41"
@@ -45,6 +44,7 @@ futures = { version = "0.3.1", optional = true }
4544
http = { version = "0.2.0", optional = true }
4645
tokio = { version = "0.2.13", optional = true }
4746
url = "2.1.1"
47+
kv-log-macro = "1.0.4"
4848

4949
[dev-dependencies]
5050
async-std = { version = "1.4.0", features = ["unstable", "attributes"] }

examples/static_file.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use async_std::task;
2+
use tide::log;
23

34
fn main() -> Result<(), std::io::Error> {
4-
femme::start(log::LevelFilter::Info).unwrap();
5+
femme::start(log::Level::Info.to_level_filter()).unwrap();
56
task::block_on(async {
67
let mut app = tide::new();
78
app.at("/").get(|_| async move { Ok("visit /src/*") });

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ mod router;
191191
mod server;
192192
mod utils;
193193

194+
pub mod log;
194195
pub mod prelude;
195196
pub mod redirect;
196197

src/middleware/logger.rs renamed to src/log/middleware.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
1-
use crate::{
2-
middleware::{Middleware, Next},
3-
Request, Response,
4-
};
1+
use crate::log;
2+
use crate::{Middleware, Next, Request, Response};
53
use futures_core::future::BoxFuture;
64

7-
/// A simple requests logger
5+
/// Log all incoming requests and responses.
86
///
9-
/// # Examples
7+
/// This middleware is enabled by default in Tide.
108
///
11-
/// ```rust
9+
/// # Examples
1210
///
11+
/// ```
1312
/// let mut app = tide::Server::new();
14-
/// app.middleware(tide::middleware::RequestLogger::new());
13+
/// app.middleware(tide::log::LogMiddleware::new());
1514
/// ```
16-
#[derive(Debug, Clone, Default)]
17-
pub struct RequestLogger;
15+
#[derive(Debug, Clone)]
16+
pub struct LogMiddleware {
17+
_priv: (),
18+
}
1819

19-
impl RequestLogger {
20+
impl LogMiddleware {
21+
/// Create a new instance of `LogMiddleware`.
2022
pub fn new() -> Self {
21-
Self::default()
23+
Self { _priv: () }
2224
}
2325

24-
async fn log_basic<'a, State: Send + Sync + 'static>(
26+
/// Log a request and a response.
27+
async fn log<'a, State: Send + Sync + 'static>(
2528
&'a self,
2629
ctx: Request<State>,
2730
next: Next<'a, State>,
@@ -57,12 +60,12 @@ impl RequestLogger {
5760
}
5861
}
5962

60-
impl<State: Send + Sync + 'static> Middleware<State> for RequestLogger {
63+
impl<State: Send + Sync + 'static> Middleware<State> for LogMiddleware {
6164
fn handle<'a>(
6265
&'a self,
6366
ctx: Request<State>,
6467
next: Next<'a, State>,
6568
) -> BoxFuture<'a, crate::Result<Response>> {
66-
Box::pin(async move { self.log_basic(ctx, next).await })
69+
Box::pin(async move { self.log(ctx, next).await })
6770
}
6871
}

src/log/mod.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//! Event logging types.
2+
//!
3+
//! # Examples
4+
//!
5+
//! ```no_run
6+
//! use tide::log;
7+
//!
8+
//! // `tide::log` requires starting a third-party logger such as `femme`. We may
9+
//! // ship such a logger as part of Tide in the future.
10+
//! femme::start(log::Level::Info.to_level_filter()).unwrap();
11+
//!
12+
//! log::info!("Hello cats");
13+
//! log::debug!("{} wants tuna", "Nori");
14+
//! log::error!("We're out of tuna!");
15+
//! log::info!("{} are hungry", "cats", {
16+
//! cat_1: "Chashu",
17+
//! cat_2: "Nori",
18+
//! });
19+
//! ```
20+
21+
pub use kv_log_macro::{debug, error, info, log, trace, warn};
22+
pub use kv_log_macro::{max_level, Level};
23+
24+
mod middleware;
25+
26+
pub use middleware::LogMiddleware;

src/middleware/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ use crate::{Request, Response};
1414
pub(crate) mod cookies;
1515
mod cors;
1616
// mod default_headers;
17-
mod logger;
1817

1918
// pub use compression::{Compression, Decompression};
2019
pub use cors::{Cors, Origin};
2120
// pub use default_headers::DefaultHeaders;
22-
pub use logger::RequestLogger;
2321

2422
/// Middleware that wraps around remaining middleware chain.
2523
pub trait Middleware<State>: 'static + Send + Sync {

src/server/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use http_service::HttpService;
1010
use std::fmt::Debug;
1111
use std::pin::Pin;
1212

13+
use crate::log;
1314
use crate::middleware::{cookies, Middleware, Next};
1415
use crate::router::{Router, Selection};
1516
use crate::utils::BoxFuture;
@@ -205,6 +206,7 @@ impl<State: Send + Sync + 'static> Server<State> {
205206
state: Arc::new(state),
206207
};
207208
server.middleware(cookies::CookiesMiddleware::new());
209+
server.middleware(log::LogMiddleware::new());
208210
server
209211
}
210212

src/server/route.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::sync::Arc;
55

66
use super::serve_dir::ServeDir;
77
use crate::endpoint::MiddlewareEndpoint;
8+
use crate::log;
89
use crate::utils::BoxFuture;
910
use crate::{router::Router, Endpoint, Middleware, Response};
1011

src/server/serve_dir.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use async_std::fs::File;
22
use async_std::io::BufReader;
33
use http_types::{Body, StatusCode};
44

5+
use crate::log;
56
use crate::{Endpoint, Request, Response, Result};
67

78
use std::path::{Path, PathBuf};

0 commit comments

Comments
 (0)