Añade gestión de trazas y registro de eventos

- Reexporta macros esenciales de `tracing` para el registro de eventos.
- Inicializa el gestor de trazas en el servidor web.
This commit is contained in:
Manuel Cillero 2025-07-06 23:03:21 +02:00
parent 6b8eee46f9
commit 91139d43d3
8 changed files with 467 additions and 30 deletions

View file

@ -10,48 +10,65 @@ include_config!(SETTINGS: Settings => [
"app.description" => "Developed with the amazing PageTop framework.",
"app.startup_banner" => "Slant",
// [log]
"log.tracing" => "Info",
"log.rolling" => "Stdout",
"log.path" => "log",
"log.prefix" => "tracing.log",
"log.format" => "Full",
// [server]
"server.bind_address" => "localhost",
"server.bind_port" => 8080,
]);
#[derive(Debug, Deserialize)]
/// Ajustes de configuración para las secciones globales [`[app]`](App) y [`[server]`](Server).
/// Consulta [`SETTINGS`] para los valores por defecto.
/// Ajustes para las secciones globales [`[app]`](App), [`[log]`](Log) y [`[server]`](Server) de
/// [`SETTINGS`].
pub struct Settings {
pub app: App,
pub log: Log,
pub server: Server,
}
#[derive(Debug, Deserialize)]
/// Sección `[app]` de la configuración.
///
/// Forma parte de [`Settings`].
/// Sección `[app]` de la configuración. Forma parte de [`Settings`].
pub struct App {
/// Nombre de la aplicación.
/// Valor por defecto: *"Sample"*.
pub name: String,
/// Breve descripción de la aplicación.
/// Valor por defecto: *"Developed with the amazing PageTop framework."*.
pub description: String,
/// ASCII banner printed at startup: *"Off"*, *"Slant"*, *"Small"*, *"Speed"*, or *"Starwars"*.
/// Default: *"Slant"*.
/// Banner ASCII mostrado al inicio: *"Off"* (desactivado), *"Slant"*, *"Small"*, *"Speed"* o
/// *"Starwars"*.
pub startup_banner: String,
/// Modo de ejecución.
/// Valor por defecto: el definido por la variable de entorno
/// `PAGETOP_RUN_MODE`, o *"default"* si no está establecida.
/// Modo de ejecución, dado por la variable de entorno `PAGETOP_RUN_MODE`, o *"default"* si no
/// está definido.
pub run_mode: String,
}
#[derive(Debug, Deserialize)]
/// Sección `[server]` de la configuración.
///
/// Forma parte de [`Settings`].
/// Sección `[log]` de la configuración. Forma parte de [`Settings`].
pub struct Log {
/// Opciones, o combinación de opciones separadas por comas, para filtrar las trazas: *"Error"*,
/// *"Warn"*, *"Info"*, *"Debug"* o *"Trace"*.
/// Ejemplo: "Error,actix_server::builder=Info,tracing_actix_web=Debug".
pub tracing: String,
/// Muestra los mensajes de traza en el terminal (*"Stdout"*) o las registra en archivos con
/// rotación: *"Daily"*, *"Hourly"*, *"Minutely"* o *"Endless"*.
pub rolling: String,
/// Directorio para los archivos de traza (si `rolling` ≠ *"Stdout"*).
pub path: String,
/// Prefijo para los archivos de traza (si `rolling` ≠ *"Stdout"*).
pub prefix: String,
/// Formato de salida de las trazas. Opciones: *"Full"*, *"Compact"*, *"Pretty"* o *"Json"*.
pub format: String,
}
#[derive(Debug, Deserialize)]
/// Sección `[server]` de la configuración. Forma parte de [`Settings`].
pub struct Server {
/// Dirección de enlace para el servidor web.
/// Valor por defecto: *"localhost"*.
pub bind_address: String,
/// Puerto de escucha del servidor web.
/// Valor por defecto: *8088*.
pub bind_port: u16,
}