mirror of
https://github.com/kristoferssolo/kristofersxyz-rs.git
synced 2026-02-04 06:42:06 +00:00
feat: add telemetry
This commit is contained in:
@@ -12,7 +12,11 @@ leptos_axum.workspace = true
|
||||
|
||||
axum.workspace = true
|
||||
simple_logger.workspace = true
|
||||
tokio.workspace = true
|
||||
tokio = { workspace = true, features = ["tracing"] }
|
||||
tower.workspace = true
|
||||
tower-http.workspace = true
|
||||
log.workspace = true
|
||||
tracing-bunyan-formatter = { version = "0.3", default-features = false }
|
||||
tracing = { version = "0.1", features = ["log"] }
|
||||
tracing-log = "0.2.0"
|
||||
tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] }
|
||||
|
||||
@@ -22,7 +22,7 @@ pub async fn file_and_error_handler(
|
||||
res.into_response()
|
||||
} else {
|
||||
let handler =
|
||||
leptos_axum::render_app_to_stream(options.to_owned(), move || view! { <App/> });
|
||||
leptos_axum::render_app_to_stream(options.to_owned(), move || view! { <App /> });
|
||||
handler(req).await.into_response()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
use axum::Router;
|
||||
use leptos::prelude::*;
|
||||
use leptos_axum::{generate_route_list, LeptosRoutes};
|
||||
mod telemetry;
|
||||
|
||||
use app::*;
|
||||
use axum::Router;
|
||||
use leptos::logging::log;
|
||||
use leptos::prelude::*;
|
||||
use leptos_axum::{LeptosRoutes, generate_route_list};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
|
||||
let conf = get_configuration(None).unwrap();
|
||||
let addr = conf.leptos_options.site_addr;
|
||||
let leptos_options = conf.leptos_options;
|
||||
|
||||
37
server/src/telemetry.rs
Normal file
37
server/src/telemetry.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use tracing::{Subscriber, subscriber::set_global_default};
|
||||
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
|
||||
use tracing_log::LogTracer;
|
||||
use tracing_subscriber::{EnvFilter, Registry, fmt::MakeWriter, layer::SubscriberExt};
|
||||
|
||||
/// Creates a `tracing` subscriber with Bunyan-style JSON formatting.
|
||||
///
|
||||
/// - `name`: The name of the application (used in logs).
|
||||
/// - `env_filter`: The log level filter (e.g., "info", "debug").
|
||||
/// - `sink`: The log sink (e.g., stdout, file).
|
||||
///
|
||||
/// Returns a `Subscriber` that can be used for structured logging.
|
||||
pub fn get_subscriber<Sink, Name, Filter>(
|
||||
name: Name,
|
||||
env_filter: Filter,
|
||||
sink: Sink,
|
||||
) -> impl Subscriber + Send + Sync
|
||||
where
|
||||
Sink: for<'a> MakeWriter<'a> + Send + Sync + 'static,
|
||||
Name: AsRef<str>,
|
||||
Filter: AsRef<str>,
|
||||
{
|
||||
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| env_filter.into());
|
||||
let formatting_layer = BunyanFormattingLayer::new(name.as_ref().to_string(), sink);
|
||||
Registry::default()
|
||||
.with(env_filter)
|
||||
.with(JsonStorageLayer)
|
||||
.with(formatting_layer)
|
||||
}
|
||||
|
||||
/// Initializes the global tracing subscriber.
|
||||
///
|
||||
/// - `subscriber`: The subscriber to set as the global default.
|
||||
pub fn init_subscriber(subscriber: impl Subscriber + Send + Sync) {
|
||||
LogTracer::init().expect("Failed to set logger");
|
||||
set_global_default(subscriber).expect("Failed to set subscriber.");
|
||||
}
|
||||
Reference in New Issue
Block a user