feat(api): use tracing-actix logger middleware

- Completely move away from using traditional logs
This commit is contained in:
minhtrannhat 2024-05-08 23:50:03 -04:00
parent 444e42351e
commit 7b5fa61780
Signed by: minhtrannhat
GPG Key ID: E13CFA85C53F8062
4 changed files with 23 additions and 3 deletions

20
Cargo.lock generated
View File

@ -620,6 +620,7 @@ dependencies = [
"sqlx",
"tokio",
"tracing",
"tracing-actix-web",
"tracing-bunyan-formatter",
"tracing-log 0.2.0",
"tracing-subscriber",
@ -1301,6 +1302,12 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "mutually_exclusive_features"
version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d02c0b00610773bb7fc61d85e13d86c7858cbdf00e1a120bfc41bc055dbaa0e"
[[package]]
name = "native-tls"
version = "0.2.11"
@ -2597,6 +2604,19 @@ dependencies = [
"tracing-core",
]
[[package]]
name = "tracing-actix-web"
version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa069bd1503dd526ee793bb3fce408895136c95fc86d2edb2acf1c646d7f0684"
dependencies = [
"actix-web",
"mutually_exclusive_features",
"pin-project",
"tracing",
"uuid",
]
[[package]]
name = "tracing-attributes"
version = "0.1.27"

View File

@ -28,6 +28,7 @@ tracing-bunyan-formatter = "0.3.9"
tracing-log = "0.2.0"
once_cell = "1.19.0"
secrecy = { version = "0.8.0", features = ["serde"] }
tracing-actix-web = "0.7.10"
[dependencies.sqlx]
version = "0.7"

View File

@ -14,7 +14,6 @@ pub struct FormData {
// functions args isn't really relevant to the span
skip(form, db_conn_pool),
fields(
request_id = %Uuid::new_v4(),
subscriber_email = %form.email,
subscriber_name = %form.name
)

View File

@ -1,9 +1,9 @@
use crate::routes::{healthcheck_route, subscribe_route};
use actix_web::dev::Server;
use actix_web::middleware::Logger;
use actix_web::{web, App, HttpServer};
use sqlx::PgPool;
use std::net::TcpListener;
use tracing_actix_web::TracingLogger;
pub fn run(listener: TcpListener, db_conn_pool: PgPool) -> Result<Server, std::io::Error> {
// under the hood, web::Data::new will create an Arc
@ -12,7 +12,7 @@ pub fn run(listener: TcpListener, db_conn_pool: PgPool) -> Result<Server, std::i
let server = HttpServer::new(move || {
App::new()
.wrap(Logger::default())
.wrap(TracingLogger::default())
.route("/health_check", web::get().to(healthcheck_route))
.route("/subscriptions", web::post().to(subscribe_route))
.app_data(db_conn_pool.clone())