Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions crates/starknet_transaction_prover/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ async fn main() -> anyhow::Result<()> {

use anyhow::Context;
use clap::Parser;
use starknet_transaction_prover::server::config::{CliArgs, ServiceConfig, TransportMode};
use starknet_transaction_prover::server::config::{
CliArgs,
LogFormat,
ServiceConfig,
TransportMode,
};
use starknet_transaction_prover::server::cors::{build_cors_layer, cors_mode};
use starknet_transaction_prover::server::rpc_api::ProvingRpcServer;
use starknet_transaction_prover::server::rpc_impl::ProvingRpcServerImpl;
Expand All @@ -28,16 +33,18 @@ async fn main() -> anyhow::Result<()> {
use tracing_subscriber::prelude::*;
use tracing_subscriber::{fmt, EnvFilter};

let args = CliArgs::parse();

// TODO(Avi): Revisit the starknet_transaction_prover=debug default once the service stabilizes.
// Initialize tracing with RUST_LOG. By default, keep service logs and lower third-party
// logs to warn.
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
EnvFilter::new("warn,starknet_transaction_prover=debug,privacy_prove=info")
});
tracing_subscriber::registry().with(fmt::layer()).with(filter).init();
let registry = tracing_subscriber::registry().with(filter);
match args.log_format {
LogFormat::Json => registry.with(fmt::layer().json()).init(),
LogFormat::Text => registry.with(fmt::layer()).init(),
}

// Parse CLI args and load config.
let args = CliArgs::parse();
let config = ServiceConfig::from_args(args)?;

// Build and start the JSON-RPC server.
Expand Down
15 changes: 14 additions & 1 deletion crates/starknet_transaction_prover/src/server/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::str::FromStr;

use blockifier::blockifier::config::ContractClassManagerConfig;
use blockifier::bouncer::BouncerConfig;
use clap::Parser;
use clap::{Parser, ValueEnum};
use serde::{Deserialize, Serialize};
use starknet_api::core::{ChainId, ContractAddress};
use tracing::info;
Expand Down Expand Up @@ -38,6 +38,15 @@ pub enum TransportMode {
Https { tls_cert_file: PathBuf, tls_key_file: PathBuf },
}

/// Output format for tracing log records.
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, ValueEnum)]
#[clap(rename_all = "lowercase")]
pub enum LogFormat {
#[default]
Text,
Json,
}

impl TransportMode {
/// Constructs a `TransportMode` from optional cert and key paths.
///
Expand Down Expand Up @@ -547,6 +556,10 @@ pub struct CliArgs {
#[arg(long, value_name = "SECS", env = "OHTTP_KEY_CACHE_MAX_AGE_SECS")]
pub ohttp_key_cache_max_age_secs: Option<u64>,

/// Log output format. Use `json` in production so log aggregators parse fields directly.
#[arg(long, value_enum, value_name = "FORMAT", env = "LOG_FORMAT", default_value_t = LogFormat::Text)]
pub log_format: LogFormat,

/// Hidden escape hatch: override the embedded bouncer config (block capacity limits) with a
/// custom JSON file. Not advertised because the embedded defaults are tuned for this prover
/// (including high `l1_gas` / `message_segment_length`: virtual OS output is not L1-bound; it
Expand Down
4 changes: 3 additions & 1 deletion crates/starknet_transaction_prover/src/server/config_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use rstest::rstest;
use tempfile::NamedTempFile;

use crate::errors::ConfigError;
use crate::server::config::{CliArgs, ServiceConfig, TransportMode};
use crate::server::config::{CliArgs, LogFormat, ServiceConfig, TransportMode};

/// Mutex that serializes tests which modify environment variables.
static ENV_MUTEX: Mutex<()> = Mutex::new(());
Expand Down Expand Up @@ -59,6 +59,7 @@ fn base_args() -> CliArgs {
max_request_body_size: None,
ohttp_enabled: false,
ohttp_key_cache_max_age_secs: None,
log_format: LogFormat::Text,
}
}

Expand Down Expand Up @@ -147,6 +148,7 @@ fn cors_allow_origin_rejects_non_array_in_config_file() {
max_request_body_size: None,
ohttp_enabled: false,
ohttp_key_cache_max_age_secs: None,
log_format: LogFormat::Text,
};

let error = ServiceConfig::from_args(args).unwrap_err();
Expand Down
Loading