.agents/skills/rustfs-logging-governance/references/logging-governance.md
Use Cargo.toml [workspace].members as the source of truth for crate membership. When doing a broad logging sweep, classify crates by operational role so logs stay consistent within each role.
rustfs
crates/protocols
crates/madmin
crates/trusted-proxies
crates/keystone
crates/ecstore
crates/heal
info.crates/scanner
debug/trace.crates/object-capacity
crates/filemeta
crates/storage-api
crates/checksums
crates/zip
crates/iam
crates/policy
crates/credentials
crates/kms
crates/crypto
crates/security-governance
crates/signer
crates/notify
crates/audit
crates/targets
crates/s3-types
crates/s3-ops
crates/concurrency
info.crates/lock
crates/tls-runtime
crates/obs
crates/io-core
crates/io-metrics
crates/rio
crates/rio-v2
crates/utils
crates/common
utils; prefer callers to log context-rich events.crates/config
crates/data-usage
crates/protos
crates/extension-schema
crates/s3select-api
crates/s3select-query
crates/protocols
info.crates/e2e_test
scripts/check_logging_guardrails.sh currently enforces retired patterns in these high-signal areas:
rustfs/src/main.rsrustfs/src/startup_iam.rsrustfs/src/auth.rsrustfs/src/protocols/client.rscrates/audit/src/pipeline.rscrates/audit/src/system.rscrates/audit/src/global.rscrates/notify/src/config_manager.rscrates/notify/src/runtime_facade.rscrates/notify/src/notifier.rscrates/ecstore/src/store/peer.rscrates/ecstore/src/store/init.rscrates/ecstore/src/tier/tier.rscrates/concurrency/src/workers.rscrates/concurrency/src/manager.rscrates/concurrency/src/lock.rscrates/concurrency/src/deadlock.rscrates/trusted-proxies/src/global.rscrates/trusted-proxies/src/config/loader.rscrates/trusted-proxies/src/proxy/metrics.rscrates/trusted-proxies/src/proxy/validator.rscrates/trusted-proxies/src/proxy/chain.rscrates/trusted-proxies/src/middleware/service.rscrates/trusted-proxies/src/cloud/detector.rscrates/trusted-proxies/src/cloud/ranges.rscrates/trusted-proxies/src/cloud/metadata/aws.rscrates/trusted-proxies/src/cloud/metadata/azure.rscrates/trusted-proxies/src/cloud/metadata/gcp.rsWhen expanding coverage, prefer crates with:
info!That typically means the next broad candidates are rustfs, crates/notify, crates/audit, crates/targets, crates/heal, and crates/scanner.
Prefer this structure when the fields are available:
eventcomponentsubsystemstate or resultenabledimplementationvalidation_modepeer_ipclient_ipproxy_hopsduration_msfallbackreasonrange_counthold_time_msavailable_slotstotal_slotspermits_in_useerror: the operation fails and callers or security guarantees are affected.warn: a degraded path, fallback, suspicious request, or operator-actionable config issue occurs.info: a low-frequency lifecycle or mode transition occurs.debug: useful diagnostics exist but normal operators do not need them all the time.trace: hot-path and repetitive success-path details occur."trusted proxy validation failed""concurrency manager state changed""trusted proxy cloud metadata loaded"These should usually be removed or replaced:
info!("Concurrency manager stopped")info!("Trusted Proxies module initialized")info!("=== Application Configuration ===")info!("Available metrics:")info!("worker take, {}", *available)debug!("Proxy validation successful in {:?}", duration)"Request from private network but not trusted: ...""Cloud metadata fetching is disabled"When extending scripts/check_logging_guardrails.sh:
checked_files.For logging-only changes:
cargo fmt --all --check
./scripts/check_logging_guardrails.sh
cargo check -p <affected-crate>
cargo test -p <affected-crate>
For broader Rust changes:
./scripts/check_unsafe_code_allowances.sh
./scripts/check_architecture_migration_rules.sh
cargo clippy -p <affected-crates> --all-targets -- -D warnings