Print panic messages to the log

pull/2/head
Avery 5 days ago
parent 1bafa23e81
commit f153a8b9c7
Signed by untrusted user: Avery
GPG Key ID: 4E53F4CB69B2CC8D

@ -3,8 +3,9 @@ mod users;
mod webfinger; mod webfinger;
use std::{ use std::{
fmt, fmt::{self, Debug},
iter::once, iter::once,
panic,
task::{Context, Poll}, task::{Context, Poll},
}; };
@ -14,7 +15,7 @@ use axum::{
routing::{get, post}, routing::{get, post},
}; };
use inbox::inbox_post; use inbox::inbox_post;
use log::{info, trace}; use log::{error, info, trace};
use tower_layer::Layer; use tower_layer::Layer;
use tower_service::Service; use tower_service::Service;
use users::users_get; use users::users_get;
@ -34,13 +35,42 @@ fn init_logger() {
async fn main() { async fn main() {
init_logger(); init_logger();
panic::set_hook(Box::new(|i| {
if let Some(loc) = i.location() {
if let Some(s) = i.payload().downcast_ref::<&str>() {
error!(
"Panicked at {}:{}:{}\n{}",
loc.file(),
loc.line(),
loc.column(),
sanitize_printable(s)
);
} else if let Some(s) = i.payload().downcast_ref::<String>() {
error!(
"Panicked at {}:{}:{}\n{}",
loc.file(),
loc.line(),
loc.column(),
sanitize_printable(s)
);
}
} else {
if let Some(s) = i.payload().downcast_ref::<&str>() {
error!("Panicked\n{s:?}",);
} else if let Some(s) = i.payload().downcast_ref::<String>() {
error!("Panicked\n{s:?}",);
}
}
}));
let app = Router::new() let app = Router::new()
.route("/", get(root)) .route("/", get(root))
.route("/.well-known/webfinger", get(webfinger_get)) .route("/.well-known/webfinger", get(webfinger_get))
.route("/users/{users}/", get(users_get)) .route("/users/{users}/", get(users_get))
.route("/users/{users}", get(users_get)) .route("/users/{users}", get(users_get))
.route("/inbox/{users}/", post(inbox_post)) .route("/inbox/{users}/", post(inbox_post))
.fallback(fallback); .fallback(fallback)
.layer(TraceLayer);
let listener = tokio::net::TcpListener::bind("0.0.0.0:8000").await.unwrap(); let listener = tokio::net::TcpListener::bind("0.0.0.0:8000").await.unwrap();
axum::serve(listener, app).await.unwrap(); axum::serve(listener, app).await.unwrap();

Loading…
Cancel
Save