use anyhow::{Context, Result};
use opentelemetry_lambda_extension::{Config, ExtensionRuntime};
use tracing_subscriber::{EnvFilter, fmt, layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
async fn main() -> Result<()> {
init_tracing().context("failed to initialise tracing subscriber")?;
let config = Config::load().context("failed to load configuration")?;
tracing::debug!(?config, "Configuration loaded");
ExtensionRuntime::new(config)
.run()
.await
.context("extension runtime failed")?;
Ok(())
}
fn init_tracing() -> Result<()> {
let filter = EnvFilter::try_from_default_env()
.unwrap_or_else(|_| EnvFilter::new("info,opentelemetry_lambda_extension=debug"));
tracing_subscriber::registry()
.with(fmt::layer().with_target(true).without_time())
.with(filter)
.try_init()
.context("failed to initialise tracing registry")?;
Ok(())
}