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;
use std::{
fmt,
fmt::{self, Debug},
iter::once,
panic,
task::{Context, Poll},
};
@ -14,7 +15,7 @@ use axum::{
routing::{get, post},
};
use inbox::inbox_post;
use log::{info, trace};
use log::{error, info, trace};
use tower_layer::Layer;
use tower_service::Service;
use users::users_get;
@ -34,13 +35,42 @@ fn init_logger() {
async fn main() {
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()
.route("/", get(root))
.route("/.well-known/webfinger", get(webfinger_get))
.route("/users/{users}/", get(users_get))
.route("/users/{users}", get(users_get))
.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();
axum::serve(listener, app).await.unwrap();

Loading…
Cancel
Save