tangle_indexer


git clone https://radroots.dev/git/tangle_indexer.git
Log | Files | Refs | Submodules | LICENSE

commit 0c2d5c745f61386a88f0ca65e212e58c70f2a8d6
parent ec11a77e3ce9953c5f0536d29dcbbeeabdaba9aa
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Sat,  2 Aug 2025 17:32:26 +0000

Add daily-rotating file appender to tracing initializer

Diffstat:
Mcrates/indexer/src/config.rs | 4++--
Mcrates/indexer/src/main.rs | 29++++++++++++++++++++++-------
2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/crates/indexer/src/config.rs b/crates/indexer/src/config.rs @@ -1,8 +1,7 @@ -use std::path::Path; - use anyhow::Result; use config::{Config, ConfigError, File}; use serde::{Deserialize, Serialize}; +use std::path::Path; use thiserror::Error; use tracing::error; @@ -21,6 +20,7 @@ pub struct Relay { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Service { pub output_dir: String, + pub logs_dir: String, pub flush_interval: u64, } diff --git a/crates/indexer/src/main.rs b/crates/indexer/src/main.rs @@ -1,13 +1,28 @@ use anyhow::{Context, Result}; use clap::Parser; use radroots_market_relay_indexer::config::Settings; +use std::path::Path; use std::time::{Duration, Instant}; use tracing::{error, info}; -use tracing_subscriber::EnvFilter; +use tracing_appender::rolling; +use tracing_subscriber::{fmt, prelude::*, registry::Registry, EnvFilter}; -fn init_tracing() { - tracing_subscriber::fmt::fmt() - .with_env_filter(EnvFilter::from_default_env()) +pub fn init_tracing(logs_dir: impl AsRef<Path>) { + let file_appender = rolling::daily(logs_dir, concat!(env!("CARGO_PKG_NAME"), ".log")); + let (file_writer, guard) = tracing_appender::non_blocking(file_appender); + std::mem::forget(guard); + + let stdout_layer = fmt::layer().with_writer(std::io::stdout).with_target(false); + + let file_layer = fmt::layer() + .with_writer(file_writer) + .with_ansi(false) + .with_target(false); + + Registry::default() + .with(EnvFilter::from_default_env()) + .with(stdout_layer) + .with(file_layer) .init(); } @@ -24,7 +39,6 @@ pub struct CliArgs { #[tokio::main] async fn main() { - init_tracing(); let cli_args = CliArgs::parse(); if let Err(err) = run_service(cli_args).await { @@ -34,11 +48,12 @@ async fn main() { } async fn run_service(cli_args: CliArgs) -> Result<()> { - info!("Service starting"); - let settings = Settings::load(&cli_args.config) .with_context(|| format!("Failed to load configuration from {:?}", cli_args.config))?; + init_tracing(settings.service.logs_dir); + info!("Service starting"); + loop { let iteration_start = Instant::now();