Disable logs of NNS Governance Canister

I’m upgrading the NNS Governance canister to the latest version in the Juno Docker setup (and running into a few issues reported here). I’ve noticed the logging has become more verbose, is that possible? Is there a way to suppress all logs below the error level?

1 Like

As a canister consumer, I’d like the option to hide logs from the CMC and Governance canisters, as they’re not relevant to my development workflow. I might be interested in whether there was an issue during setup but, any additional details - more than one line that tells me the installation is over - is kind of noise.

juno-console-1 | 2025-05-14 06:19:10.718863342 UTC: [Canister rkp4c-7iaaa-aaaaa-aaaca-cai] [cycles] init() with ledger canister ryjl3-tyaaa-aaaaa-aaaba-cai, governance canister rrkah-fqaaa-aaaaa-aaaaq-cai, exchange rate canister , minting account 832cc22cc68fa2dd21bc6d400298bb80846882d0a5ca7eb7369ab2dca03dfa10, and cycles ledger canister
juno-console-1 | 2025-05-14 06:19:12.009088551 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] canister_init: Initializing with: economics: Some(NetworkEconomics { reject_cost_e8s: 100000000, neuron_minimum_stake_e8s: 100000000, neuron_management_fee_per_proposal_e8s: 1000000, minimum_icp_xdr_rate: 100, neuron_spawn_dissolve_delay_seconds: 604800, maximum_node_provider_rewards_e8s: 100000000000000, transaction_fee_e8s: 10000, max_proposals_to_keep_per_topic: 100, neurons_fund_economics: Some(NeuronsFundEconomics { max_theoretical_neurons_fund_participation_amount_xdr: Some(Decimal { human_readable: Some(“750_000.0”) }), neurons_fund_matched_funding_curve_coefficients: Some(NeuronsFundMatchedFundingCurveCoefficients { contribution_threshold_xdr: Some(Decimal { human_readable: Some(“75_000.0”) }), one_third_participation_milestone_xdr: Some(Decimal { human_readable: Some(“225_000.0”) }), full_participation_milestone_xdr: Some(Decimal { human_readable: Some(“375_000.0”) }) }), minimum_icp_xdr_rate: Some(Percentage { basis_points: Some(10000) }), maximum_icp_xdr_rate: Some(Percentage { basis_points: Some(1000000) }) }), voting_power_economics: Some(VotingPowerEconomics { start_reducing_voting_power_after_seconds: Some(15778800), clear_following_after_seconds: Some(2629800), neuron_minimum_dissolve_delay_to_vote_seconds: Some(15778800) }) }), genesis_timestamp_seconds: 0, neuron count: 1
juno-console-1 | :rocket: CMC deployed. ID: rkp4c-7iaaa-aaaaa-aaaca-cai
juno-console-1 | :rocket: NNS Governance deployed. ID: rrkah-fqaaa-aaaaa-aaaaq-cai
juno-console-1 | 2025-05-14 06:19:16.899032178 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Updated daily maturity modulation rate to (in basis points): 0, at: 1747203556. Last updated: None
juno-console-1 | 2025-05-14 06:19:17.551053970 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 1 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747203557, yes: 0, no: 0, total: 0 }
juno-console-1 | 2025-05-14 06:19:17.551053970 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 2 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747203557, yes: 249914192248458, no: 0, total: 249914192248458 }
juno-console-1 | 2025-05-14 06:19:17.551053970 UTC: [Canister rkp4c-7iaaa-aaaaa-aaaca-cai] [cycles] conversion rate update: IcpXdrConversionRate { timestamp_seconds: 1747203557, xdr_permyriad_per_icp: 41388 }
juno-console-1 | 2025-05-14 06:19:17.551053970 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Execution of proposal: 2 succeeded. (Proposal title: Some(“ICP/XDR Conversion Rate”))

1 Like

I agree.

I tend to start the replica in a multiplexed session in order to escape the verbose logs:

tmux new -s replica
dfx start --clean --background
dfx nns install
CTRL B + D

Then if I ever need to check what’s going on with I reattach to that session with tmux attach -t replica

It would be nice to not have to do this and instead be able to specify the level of verbosity that you’re after with the logs.

2 Likes

Yes, that would definitely be nice. In the meantime, perhaps, you can pipe the output through

| grep -v "Canister rrkah-fqaaa-aaaaa-aaaaq-cai" \
| grep -v "I do not need to see this spam either" \
...

?

I don’t think it’s that a viable option unfortunately, since the verbosity affects all developers, not just me. It would mean either baking grep into the tooling I provide or expecting each developer to run it themselves, plus offering OS-specific instructions. Either way, it’s not exactly a great DX.

It is admittedly not ideal, but at least it’s something people can do right now.