Show errors on failure (#5643)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
@@ -28,13 +28,10 @@ async fn shutdown_signal() {
|
||||
}
|
||||
|
||||
pub async fn run() -> Result<()> {
|
||||
// Initialize logging and telemetry
|
||||
crate::logging::setup_logging(Some("goosed"))?;
|
||||
|
||||
let settings = configuration::Settings::new()?;
|
||||
|
||||
// Initialize pricing cache on startup
|
||||
tracing::info!("Initializing pricing cache...");
|
||||
if let Err(e) = initialize_pricing_cache().await {
|
||||
tracing::warn!(
|
||||
"Failed to initialize pricing cache: {}. Pricing data may not be available.",
|
||||
@@ -61,7 +58,7 @@ pub async fn run() -> Result<()> {
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(settings.socket_addr()).await?;
|
||||
info!("listening on {}", listener.local_addr()?);
|
||||
// Ensure the listener/socket is properly closed on cancellation by using graceful shutdown
|
||||
|
||||
axum::serve(listener, app)
|
||||
.with_graceful_shutdown(shutdown_signal())
|
||||
.await?;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use anyhow::{Context, Result};
|
||||
use anyhow::Result;
|
||||
use tracing_appender::rolling::Rotation;
|
||||
use tracing_subscriber::{
|
||||
filter::LevelFilter, fmt, layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, Layer,
|
||||
@@ -20,11 +20,8 @@ pub fn setup_logging(name: Option<&str>) -> Result<()> {
|
||||
} else {
|
||||
format!("{}.log", timestamp)
|
||||
};
|
||||
let file_appender = tracing_appender::rolling::RollingFileAppender::new(
|
||||
Rotation::NEVER, // we do manual rotation via file naming and cleanup_old_logs
|
||||
log_dir,
|
||||
log_filename,
|
||||
);
|
||||
let file_appender =
|
||||
tracing_appender::rolling::RollingFileAppender::new(Rotation::NEVER, log_dir, log_filename);
|
||||
|
||||
// Create JSON file logging layer
|
||||
let file_layer = fmt::layer()
|
||||
@@ -34,35 +31,27 @@ pub fn setup_logging(name: Option<&str>) -> Result<()> {
|
||||
.with_ansi(false)
|
||||
.with_file(true);
|
||||
|
||||
// Create console logging layer for development - INFO and above only
|
||||
let base_env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
|
||||
EnvFilter::new("")
|
||||
.add_directive("mcp_client=info".parse().unwrap())
|
||||
.add_directive("goose=debug".parse().unwrap())
|
||||
.add_directive("goose_server=info".parse().unwrap())
|
||||
.add_directive("tower_http=info".parse().unwrap())
|
||||
.add_directive(LevelFilter::WARN.into())
|
||||
});
|
||||
|
||||
let console_layer = fmt::layer()
|
||||
.with_writer(std::io::stderr)
|
||||
.with_target(true)
|
||||
.with_level(true)
|
||||
.with_ansi(true)
|
||||
.with_file(true)
|
||||
.with_ansi(false)
|
||||
.with_line_number(true)
|
||||
.pretty();
|
||||
|
||||
// Base filter for all logging
|
||||
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
|
||||
// Set default levels for different modules
|
||||
EnvFilter::new("")
|
||||
// Set mcp-client to DEBUG
|
||||
.add_directive("mcp_client=debug".parse().unwrap())
|
||||
// Set goose module to DEBUG
|
||||
.add_directive("goose=debug".parse().unwrap())
|
||||
// Set goose-server to INFO
|
||||
.add_directive("goose_server=info".parse().unwrap())
|
||||
// Set tower-http to INFO for request logging
|
||||
.add_directive("tower_http=info".parse().unwrap())
|
||||
// Set everything else to WARN
|
||||
.add_directive(LevelFilter::WARN.into())
|
||||
});
|
||||
|
||||
let mut layers = vec![
|
||||
file_layer.with_filter(env_filter).boxed(),
|
||||
console_layer.with_filter(LevelFilter::INFO).boxed(),
|
||||
file_layer.with_filter(base_env_filter.clone()).boxed(),
|
||||
console_layer.with_filter(base_env_filter).boxed(),
|
||||
];
|
||||
|
||||
if let Ok((otlp_tracing_layer, otlp_metrics_layer, otlp_logs_layer)) = otlp_layer::init_otlp() {
|
||||
@@ -89,9 +78,7 @@ pub fn setup_logging(name: Option<&str>) -> Result<()> {
|
||||
|
||||
let subscriber = Registry::default().with(layers);
|
||||
|
||||
subscriber
|
||||
.try_init()
|
||||
.context("Failed to set global subscriber")?;
|
||||
subscriber.try_init()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user