Pārlūkot izejas kodu

Move solana-logger back to agave as agave-logger (#8622)

Move solana-logger back to agave monorepo

This logic was always Agave specific and probably should not have moved
to the SDK with everything else. In any case, bring the logic back into
Agave and reintroduce it as agave-logger
steviez 3 nedēļas atpakaļ
vecāks
revīzija
5af914802e
100 mainītis faili ar 581 papildinājumiem un 411 dzēšanām
  1. 55 46
      Cargo.lock
  2. 2 1
      Cargo.toml
  3. 1 1
      accounts-cluster-bench/Cargo.toml
  4. 4 4
      accounts-cluster-bench/src/main.rs
  5. 1 1
      accounts-db/Cargo.toml
  6. 1 1
      accounts-db/benches/accounts.rs
  7. 1 1
      accounts-db/src/account_storage_reader.rs
  8. 1 1
      accounts-db/src/accounts.rs
  9. 38 38
      accounts-db/src/accounts_db/tests.rs
  10. 4 4
      accounts-db/src/accounts_index.rs
  11. 5 5
      accounts-db/src/accounts_index/in_mem_accounts_index.rs
  12. 2 2
      accounts-db/src/ancestors.rs
  13. 6 6
      accounts-db/src/ancient_append_vecs.rs
  14. 1 1
      accounts-db/src/append_vec.rs
  15. 6 6
      accounts-db/src/bucket_map_holder.rs
  16. 11 11
      accounts-db/src/rolling_bit_field.rs
  17. 1 1
      banking-bench/Cargo.toml
  18. 1 1
      banking-bench/src/main.rs
  19. 1 2
      bench-tps/Cargo.toml
  20. 1 1
      bench-tps/src/main.rs
  21. 2 2
      bench-tps/tests/bench_tps.rs
  22. 1 1
      bench-vote/Cargo.toml
  23. 1 1
      bench-vote/src/main.rs
  24. 1 1
      bucket_map/Cargo.toml
  25. 2 2
      bucket_map/src/bucket.rs
  26. 2 2
      bucket_map/src/bucket_map.rs
  27. 1 1
      bucket_map/src/bucket_storage.rs
  28. 1 1
      cargo-registry/Cargo.toml
  29. 1 1
      cargo-registry/src/main.rs
  30. 1 1
      cli/Cargo.toml
  31. 1 1
      cli/src/main.rs
  32. 1 1
      cli/src/program.rs
  33. 1 1
      cli/tests/cluster_query.rs
  34. 1 1
      cli/tests/nonce.rs
  35. 16 16
      cli/tests/program.rs
  36. 12 12
      cli/tests/stake.rs
  37. 5 5
      cli/tests/transfer.rs
  38. 1 1
      cli/tests/validator_info.rs
  39. 1 1
      client-test/Cargo.toml
  40. 1 1
      client-test/tests/client.rs
  41. 2 2
      client-test/tests/send_and_confirm_transactions_in_parallel.rs
  42. 1 1
      connection-cache/Cargo.toml
  43. 1 1
      connection-cache/src/connection_cache.rs
  44. 1 1
      core/Cargo.toml
  45. 1 1
      core/benches/banking_stage.rs
  46. 2 2
      core/benches/sigverify_stage.rs
  47. 5 5
      core/src/banking_stage.rs
  48. 10 10
      core/src/banking_stage/consumer.rs
  49. 5 5
      core/src/banking_stage/qos_service.rs
  50. 2 2
      core/src/cluster_info_vote_listener.rs
  51. 1 1
      core/src/cluster_slots_service/cluster_slots.rs
  52. 7 7
      core/src/consensus.rs
  53. 1 1
      core/src/mock_alpenglow_consensus.rs
  54. 1 1
      core/src/repair/repair_response.rs
  55. 1 1
      core/src/repair/repair_service.rs
  56. 5 5
      core/src/repair/serve_repair.rs
  57. 10 10
      core/src/replay_stage.rs
  58. 2 2
      core/src/sigverify_stage.rs
  59. 1 1
      core/src/tvu.rs
  60. 6 6
      core/src/validator.rs
  61. 4 4
      core/tests/snapshots.rs
  62. 2 2
      core/tests/unified_scheduler.rs
  63. 1 1
      cost-model/Cargo.toml
  64. 1 1
      cost-model/src/cost_model.rs
  65. 1 1
      cost-model/src/cost_tracker.rs
  66. 2 2
      cost-model/src/transaction_cost.rs
  67. 21 25
      dev-bins/Cargo.lock
  68. 1 1
      dev-bins/Cargo.toml
  69. 1 1
      dos/Cargo.toml
  70. 4 4
      dos/src/main.rs
  71. 1 1
      entry/Cargo.toml
  72. 4 4
      entry/src/entry.rs
  73. 1 1
      faucet/Cargo.toml
  74. 1 1
      faucet/src/bin/faucet.rs
  75. 1 1
      genesis/Cargo.toml
  76. 1 1
      genesis/src/main.rs
  77. 1 1
      gossip/Cargo.toml
  78. 3 3
      gossip/src/cluster_info.rs
  79. 2 2
      gossip/src/duplicate_shred_handler.rs
  80. 1 1
      gossip/src/main.rs
  81. 1 1
      gossip/src/wire_format_tests.rs
  82. 5 5
      gossip/tests/crds_gossip.rs
  83. 6 6
      gossip/tests/gossip.rs
  84. 1 1
      install/Cargo.toml
  85. 2 2
      install/src/lib.rs
  86. 1 1
      ledger-tool/Cargo.toml
  87. 1 1
      ledger-tool/src/main.rs
  88. 1 1
      ledger/Cargo.toml
  89. 10 10
      ledger/src/blockstore.rs
  90. 3 3
      ledger/src/blockstore_cleanup_service.rs
  91. 2 2
      ledger/src/blockstore_db.rs
  92. 19 19
      ledger/src/blockstore_processor.rs
  93. 3 3
      ledger/src/shred.rs
  94. 3 3
      ledger/src/sigverify_shreds.rs
  95. 1 1
      ledger/src/wire_format_tests.rs
  96. 1 1
      local-cluster/Cargo.toml
  97. 1 1
      local-cluster/src/integration_tests.rs
  98. 40 40
      local-cluster/tests/local_cluster.rs
  99. 27 0
      logger/Cargo.toml
  100. 138 0
      logger/src/lib.rs

+ 55 - 46
Cargo.lock

@@ -78,6 +78,7 @@ dependencies = [
 name = "agave-cargo-registry"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "clap 2.33.3",
  "flate2",
  "hex",
@@ -92,7 +93,6 @@ dependencies = [
  "solana-cli-output",
  "solana-commitment-config",
  "solana-keypair",
- "solana-logger",
  "solana-pubkey",
  "solana-remote-wallet",
  "solana-rpc-client",
@@ -151,6 +151,7 @@ dependencies = [
 name = "agave-install"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "atty",
  "bincode",
  "bzip2",
@@ -172,7 +173,6 @@ dependencies = [
  "solana-config-interface",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-pubkey",
  "solana-rpc-client",
@@ -199,11 +199,22 @@ dependencies = [
  "smallvec",
 ]
 
+[[package]]
+name = "agave-logger"
+version = "3.1.0"
+dependencies = [
+ "env_logger",
+ "libc",
+ "log",
+ "signal-hook",
+]
+
 [[package]]
 name = "agave-precompiles"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-precompiles",
  "bincode",
  "bytemuck",
@@ -217,7 +228,6 @@ dependencies = [
  "solana-ed25519-program",
  "solana-instruction",
  "solana-keccak-hasher",
- "solana-logger",
  "solana-message",
  "solana-precompile-error",
  "solana-pubkey",
@@ -264,6 +274,7 @@ name = "agave-snapshots"
 version = "3.1.0"
 dependencies = [
  "agave-fs",
+ "agave-logger",
  "assert_matches",
  "bzip2",
  "crossbeam-channel",
@@ -275,7 +286,6 @@ dependencies = [
  "solana-genesis-config",
  "solana-hash",
  "solana-lattice-hash",
- "solana-logger",
  "strum",
  "tar",
  "tempfile",
@@ -393,6 +403,7 @@ name = "agave-validator"
 version = "3.1.0"
 dependencies = [
  "agave-geyser-plugin-interface",
+ "agave-logger",
  "agave-snapshots",
  "assert_cmd",
  "chrono",
@@ -441,7 +452,6 @@ dependencies = [
  "solana-inflation",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-metrics",
  "solana-native-token",
  "solana-net-utils",
@@ -495,6 +505,7 @@ dependencies = [
 name = "agave-votor"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-votor-messages",
  "anyhow",
  "bincode",
@@ -528,7 +539,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
@@ -556,19 +566,20 @@ dependencies = [
 name = "agave-votor-messages"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "serde",
  "solana-bls-signatures",
  "solana-clock",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
  "solana-hash",
- "solana-logger",
 ]
 
 [[package]]
 name = "agave-watchtower"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "clap 2.33.3",
  "humantime",
  "log",
@@ -576,7 +587,6 @@ dependencies = [
  "solana-cli-config",
  "solana-cli-output",
  "solana-hash",
- "solana-logger",
  "solana-metrics",
  "solana-native-token",
  "solana-notifier",
@@ -6909,6 +6919,7 @@ dependencies = [
 name = "solana-accounts-cluster-bench"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "clap 2.33.3",
  "log",
  "rand 0.8.5",
@@ -6927,7 +6938,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-local-cluster",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-native-token",
@@ -6956,6 +6966,7 @@ name = "solana-accounts-db"
 version = "3.1.0"
 dependencies = [
  "agave-fs",
+ "agave-logger",
  "agave-reserved-account-keys",
  "ahash 0.8.11",
  "assert_matches",
@@ -7000,7 +7011,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-lattice-hash",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-metrics",
@@ -7179,6 +7189,7 @@ dependencies = [
 name = "solana-bench-vote"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "clap 2.33.3",
  "crossbeam-channel",
@@ -7187,7 +7198,6 @@ dependencies = [
  "solana-connection-cache",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-net-utils",
  "solana-pubkey",
@@ -7368,6 +7378,7 @@ dependencies = [
 name = "solana-bucket-map"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bv",
  "bytemuck",
  "bytemuck_derive",
@@ -7379,7 +7390,6 @@ dependencies = [
  "rayon",
  "solana-bucket-map",
  "solana-clock",
- "solana-logger",
  "solana-measure",
  "solana-pubkey",
  "tempfile",
@@ -7429,6 +7439,7 @@ dependencies = [
 name = "solana-cargo-build-sbf"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "assert_cmd",
  "bzip2",
  "cargo_metadata",
@@ -7443,7 +7454,6 @@ dependencies = [
  "serial_test",
  "solana-file-download",
  "solana-keypair",
- "solana-logger",
  "tar",
 ]
 
@@ -7451,12 +7461,12 @@ dependencies = [
 name = "solana-cargo-test-sbf"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "cargo_metadata",
  "clap 3.2.23",
  "itertools 0.12.1",
  "log",
  "regex",
- "solana-logger",
 ]
 
 [[package]]
@@ -7527,6 +7537,7 @@ name = "solana-cli"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-syscalls",
  "assert_matches",
  "bincode",
@@ -7571,7 +7582,6 @@ dependencies = [
  "solana-loader-v3-interface",
  "solana-loader-v4-interface",
  "solana-loader-v4-program",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-nonce",
@@ -7724,6 +7734,7 @@ dependencies = [
 name = "solana-client-test"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "futures-util",
  "serde_json",
  "solana-client",
@@ -7731,7 +7742,6 @@ dependencies = [
  "solana-commitment-config",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-merkle-tree",
  "solana-message",
@@ -7906,6 +7916,7 @@ dependencies = [
 name = "solana-connection-cache"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "async-trait",
  "bincode",
  "crossbeam-channel",
@@ -7917,7 +7928,6 @@ dependencies = [
  "rand_chacha 0.3.1",
  "rayon",
  "solana-keypair",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
@@ -7933,6 +7943,7 @@ version = "3.1.0"
 dependencies = [
  "agave-banking-stage-ingress-types",
  "agave-feature-set",
+ "agave-logger",
  "agave-reserved-account-keys",
  "agave-scheduler-bindings",
  "agave-scheduling-utils",
@@ -8015,7 +8026,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-metrics",
@@ -8092,6 +8102,7 @@ name = "solana-cost-model"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-reserved-account-keys",
  "ahash 0.8.11",
  "itertools 0.12.1",
@@ -8112,7 +8123,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-metrics",
  "solana-packet",
@@ -8240,6 +8250,7 @@ dependencies = [
 name = "solana-entry"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-reserved-account-keys",
  "assert_matches",
  "bincode",
@@ -8255,7 +8266,6 @@ dependencies = [
  "solana-entry",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-measure",
  "solana-merkle-tree",
  "solana-message",
@@ -8359,6 +8369,7 @@ dependencies = [
 name = "solana-faucet"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "clap 2.33.3",
  "crossbeam-channel",
@@ -8371,7 +8382,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-metrics",
  "solana-net-utils",
@@ -8489,6 +8499,7 @@ name = "solana-genesis"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-snapshots",
  "base64 0.22.1",
  "bincode",
@@ -8514,7 +8525,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-native-token",
  "solana-poh-config",
  "solana-pubkey",
@@ -8608,6 +8618,7 @@ name = "solana-gossip"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "anyhow",
  "arrayvec",
  "assert_matches",
@@ -8648,7 +8659,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-native-token",
@@ -8858,6 +8868,7 @@ name = "solana-ledger"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-reserved-account-keys",
  "agave-snapshots",
  "anyhow",
@@ -8910,7 +8921,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-metrics",
@@ -9036,6 +9046,7 @@ dependencies = [
 name = "solana-local-cluster"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-snapshots",
  "assert_matches",
  "crossbeam-channel",
@@ -9064,7 +9075,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-local-cluster",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-net-utils",
@@ -9186,6 +9196,7 @@ checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f"
 name = "solana-net-utils"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "anyhow",
  "bincode",
  "bytes",
@@ -9200,7 +9211,6 @@ dependencies = [
  "serde",
  "shuttle",
  "socket2 0.6.1",
- "solana-logger",
  "solana-net-utils",
  "solana-serde",
  "solana-svm-type-overrides",
@@ -9286,6 +9296,7 @@ dependencies = [
 name = "solana-perf"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "ahash 0.8.11",
  "assert_matches",
  "bencher",
@@ -9308,7 +9319,6 @@ dependencies = [
  "solana-frozen-abi-macro",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-metrics",
  "solana-packet",
@@ -9334,6 +9344,7 @@ dependencies = [
 name = "solana-poh"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "arc-swap",
  "assert_matches",
  "bincode",
@@ -9349,7 +9360,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-perf",
@@ -9370,12 +9380,12 @@ dependencies = [
 name = "solana-poh-bench"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "clap 3.2.23",
  "log",
  "num_cpus",
  "rayon",
  "solana-entry",
- "solana-logger",
  "solana-measure",
  "solana-perf",
  "solana-sha256-hasher",
@@ -9587,6 +9597,7 @@ name = "solana-program-test"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "assert_matches",
  "async-trait",
  "base64 0.22.1",
@@ -9614,7 +9625,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-message",
  "solana-msg",
  "solana-native-token",
@@ -9690,6 +9700,7 @@ dependencies = [
 name = "solana-quic-client"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "async-lock",
  "async-trait",
  "crossbeam-channel",
@@ -9701,7 +9712,6 @@ dependencies = [
  "rustls 0.23.34",
  "solana-connection-cache",
  "solana-keypair",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
@@ -10022,6 +10032,7 @@ dependencies = [
 name = "solana-rpc-test"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "bs58",
  "crossbeam-channel",
@@ -10037,7 +10048,6 @@ dependencies = [
  "solana-connection-cache",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-net-utils",
  "solana-pubkey",
  "solana-pubsub-client",
@@ -10062,6 +10072,7 @@ version = "3.1.0"
 dependencies = [
  "agave-feature-set",
  "agave-fs",
+ "agave-logger",
  "agave-precompiles",
  "agave-reserved-account-keys",
  "agave-snapshots",
@@ -10146,7 +10157,6 @@ dependencies = [
  "solana-lattice-hash",
  "solana-loader-v3-interface",
  "solana-loader-v4-interface",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-metrics",
@@ -10350,6 +10360,7 @@ dependencies = [
 name = "solana-send-transaction-service"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "async-trait",
  "crossbeam-channel",
  "itertools 0.12.1",
@@ -10362,7 +10373,6 @@ dependencies = [
  "solana-genesis-config",
  "solana-hash",
  "solana-keypair",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
@@ -10666,6 +10676,7 @@ dependencies = [
 name = "solana-streamer"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "anyhow",
  "arc-swap",
  "assert_matches",
@@ -10692,7 +10703,6 @@ dependencies = [
  "smallvec",
  "socket2 0.6.1",
  "solana-keypair",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
@@ -10717,6 +10727,7 @@ dependencies = [
 name = "solana-svm"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-syscalls",
  "ahash 0.8.11",
  "assert_matches",
@@ -10749,7 +10760,6 @@ dependencies = [
  "solana-loader-v3-interface",
  "solana-loader-v4-interface",
  "solana-loader-v4-program",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-nonce",
@@ -10819,6 +10829,7 @@ name = "solana-svm-test-harness"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-precompiles",
  "agave-syscalls",
  "bincode",
@@ -10835,7 +10846,6 @@ dependencies = [
  "solana-instruction",
  "solana-instruction-error",
  "solana-last-restart-slot",
- "solana-logger",
  "solana-precompile-error",
  "solana-program-runtime",
  "solana-pubkey",
@@ -11024,7 +11034,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-net-utils",
@@ -11066,6 +11075,7 @@ dependencies = [
 name = "solana-tokens"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "assert_matches",
  "bincode",
  "chrono",
@@ -11086,7 +11096,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-program-error",
@@ -11257,6 +11266,7 @@ dependencies = [
 name = "solana-transaction-dos"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "clap 2.33.3",
  "log",
@@ -11273,7 +11283,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-local-cluster",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-net-utils",
@@ -11395,6 +11404,7 @@ name = "solana-turbine"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-votor",
  "agave-xdp",
  "assert_matches",
@@ -11422,7 +11432,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-native-token",
@@ -11487,6 +11496,7 @@ name = "solana-unified-scheduler-pool"
 version = "3.1.0"
 dependencies = [
  "agave-banking-stage-ingress-types",
+ "agave-logger",
  "aquamarine",
  "assert_matches",
  "crossbeam-channel",
@@ -11503,7 +11513,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-metrics",
  "solana-poh",
  "solana-pubkey",
@@ -11547,6 +11556,7 @@ name = "solana-vortexor"
 version = "3.1.0"
 dependencies = [
  "agave-banking-stage-ingress-types",
+ "agave-logger",
  "assert_matches",
  "bytes",
  "clap 4.5.31",
@@ -11577,7 +11587,6 @@ dependencies = [
  "solana-core",
  "solana-keypair",
  "solana-local-cluster",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-native-token",
@@ -11600,6 +11609,7 @@ dependencies = [
 name = "solana-vote"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "arbitrary",
  "bencher",
  "bincode",
@@ -11615,7 +11625,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-packet",
  "solana-pubkey",
  "solana-sdk-ids",
@@ -11665,6 +11674,7 @@ name = "solana-vote-program"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "assert_matches",
  "bincode",
  "criterion",
@@ -11682,7 +11692,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-metrics",
  "solana-packet",
  "solana-program-runtime",
@@ -11705,6 +11714,7 @@ dependencies = [
 name = "solana-wen-restart"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-snapshots",
  "anyhow",
  "assert_matches",
@@ -11723,7 +11733,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-pubkey",
  "solana-runtime",
  "solana-shred-version",

+ 2 - 1
Cargo.toml

@@ -46,6 +46,7 @@ members = [
     "lattice-hash",
     "ledger",
     "local-cluster",
+    "logger",
     "measure",
     "merkle-tree",
     "metrics",
@@ -186,6 +187,7 @@ agave-feature-set = { path = "feature-set", version = "=3.1.0", features = ["aga
 agave-fs = { path = "fs", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-io-uring = { path = "io-uring", version = "=3.1.0", features = ["agave-unstable-api"] }
+agave-logger = { path = "logger", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-precompiles = { path = "precompiles", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-reserved-account-keys = { path = "reserved-account-keys", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-scheduler-bindings = { path = "scheduler-bindings", version = "=3.1.0", features = ["agave-unstable-api"] }
@@ -459,7 +461,6 @@ solana-loader-v3-interface = "6.1.0"
 solana-loader-v4-interface = "3.1.0"
 solana-loader-v4-program = { path = "programs/loader-v4", version = "=3.1.0", features = ["agave-unstable-api"] }
 solana-local-cluster = { path = "local-cluster", version = "=3.1.0", features = ["agave-unstable-api"] }
-solana-logger = "3.0.0"
 solana-measure = { path = "measure", version = "=3.1.0", features = ["agave-unstable-api"] }
 solana-merkle-tree = { path = "merkle-tree", version = "=3.1.0", features = ["agave-unstable-api"] }
 solana-message = "3.0.1"

+ 1 - 1
accounts-cluster-bench/Cargo.toml

@@ -16,6 +16,7 @@ agave-unstable-api = []
 dev-context-only-utils = []
 
 [dependencies]
+agave-logger = { workspace = true }
 clap = { workspace = true }
 log = { workspace = true }
 rand = { workspace = true }
@@ -30,7 +31,6 @@ solana-gossip = { workspace = true }
 solana-hash = { workspace = true }
 solana-instruction = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = { workspace = true }
 solana-measure = { workspace = true }
 solana-message = { workspace = true, features = ["serde", "bincode", "blake3"] }
 solana-net-utils = { workspace = true }

+ 4 - 4
accounts-cluster-bench/src/main.rs

@@ -1136,7 +1136,7 @@ fn run_accounts_bench(
 }
 
 fn main() {
-    solana_logger::setup_with_default("solana=info");
+    agave_logger::setup_with_default("solana=info");
     let matches = App::new(crate_name!())
         .about(crate_description!())
         .version(solana_version::version!())
@@ -1458,7 +1458,7 @@ pub mod test {
 
     #[test]
     fn test_accounts_cluster_bench() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut validator_config = ValidatorConfig::default_for_test();
         initialize_and_add_secondary_indexes(&mut validator_config);
         let num_nodes = 1;
@@ -1508,7 +1508,7 @@ pub mod test {
 
     #[test]
     fn test_halt_accounts_creation_at_max() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut validator_config = ValidatorConfig::default_for_test();
         initialize_and_add_secondary_indexes(&mut validator_config);
         let num_nodes = 1;
@@ -1558,7 +1558,7 @@ pub mod test {
 
     #[test]
     fn test_create_then_reclaim_spl_token_accounts() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mint_keypair = Keypair::new();
         let mint_pubkey = mint_keypair.pubkey();
         let faucet_addr = run_local_faucet_for_tests(

+ 1 - 1
accounts-db/Cargo.toml

@@ -104,6 +104,7 @@ tempfile = { workspace = true }
 thiserror = { workspace = true }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 agave-reserved-account-keys = { workspace = true }
 assert_matches = { workspace = true }
 criterion = { workspace = true }
@@ -115,7 +116,6 @@ serde_bytes = { workspace = true }
 solana-accounts-db = { path = ".", features = ["agave-unstable-api", "dev-context-only-utils"] }
 solana-compute-budget = { workspace = true }
 solana-instruction = { workspace = true }
-solana-logger = { workspace = true }
 solana-sdk-ids = { workspace = true }
 solana-signature = { workspace = true, features = ["rand"] }
 solana-slot-history = { workspace = true }

+ 1 - 1
accounts-db/benches/accounts.rs

@@ -41,7 +41,7 @@ fn new_accounts_db(account_paths: Vec<PathBuf>) -> AccountsDb {
 
 #[bench]
 fn bench_delete_dependencies(bencher: &mut Bencher) {
-    solana_logger::setup();
+    agave_logger::setup();
     let accounts_db = new_accounts_db(vec![PathBuf::from("accounts_delete_deps")]);
     let accounts = Accounts::new(Arc::new(accounts_db));
     let mut old_pubkey = Pubkey::default();

+ 1 - 1
accounts-db/src/account_storage_reader.rs

@@ -234,7 +234,7 @@ mod tests {
         number_of_accounts_to_remove: usize,
         storage_access: StorageAccess,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         let (storage, _temp_dirs) =
             create_storage_for_storage_reader(0, AccountsFileProvider::AppendVec, storage_access);
 

+ 1 - 1
accounts-db/src/accounts.rs

@@ -1329,7 +1329,7 @@ mod tests {
 
     #[test]
     fn huge_clean() {
-        solana_logger::setup();
+        agave_logger::setup();
         let accounts_db = AccountsDb::new_single_for_tests();
         let accounts = Accounts::new(Arc::new(accounts_db));
         let mut old_pubkey = Pubkey::default();

+ 38 - 38
accounts-db/src/accounts_db/tests.rs

@@ -972,7 +972,7 @@ fn test_account_grow() {
 
 #[test]
 fn test_lazy_gc_slot() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     // Only run this test with mark obsolete accounts disabled as garbage collection
     // is not lazy with mark obsolete accounts enabled
@@ -1027,7 +1027,7 @@ fn test_lazy_gc_slot() {
 
 #[test]
 fn test_clean_zero_lamport_and_dead_slot() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_single_for_tests();
     let pubkey1 = solana_pubkey::new_rand();
@@ -1097,7 +1097,7 @@ fn test_clean_zero_lamport_and_dead_slot() {
 
 #[test]
 fn test_clean_dead_slot_with_obsolete_accounts() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     // This test is triggering a scenario in reclaim_accounts where the entire slot is reclaimed
     // When an entire slot is reclaimed, it normally unrefs the pubkeys, while when individual
@@ -1309,7 +1309,7 @@ fn test_remove_zero_lamport_single_ref_accounts_after_shrink() {
 
 #[test]
 fn test_shrink_zero_lamport_single_ref_account() {
-    solana_logger::setup();
+    agave_logger::setup();
     // note that 'None' checks the case based on the default value of `latest_full_snapshot_slot` in `AccountsDb`
     for latest_full_snapshot_slot in [None, Some(0), Some(1), Some(2)] {
         // store a zero and non-zero lamport account
@@ -1393,7 +1393,7 @@ fn test_shrink_zero_lamport_single_ref_account() {
 
 #[test]
 fn test_clean_multiple_zero_lamport_decrements_index_ref_count() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_single_for_tests();
     let pubkey1 = solana_pubkey::new_rand();
@@ -1443,7 +1443,7 @@ fn test_clean_multiple_zero_lamport_decrements_index_ref_count() {
 
 #[test]
 fn test_clean_zero_lamport_and_old_roots() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_single_for_tests();
     let pubkey = solana_pubkey::new_rand();
@@ -1483,7 +1483,7 @@ fn test_clean_zero_lamport_and_old_roots() {
 #[test_case(MarkObsoleteAccounts::Enabled)]
 #[test_case(MarkObsoleteAccounts::Disabled)]
 fn test_clean_old_with_normal_account(mark_obsolete_accounts: MarkObsoleteAccounts) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_with_config(
         Vec::new(),
@@ -1521,7 +1521,7 @@ fn test_clean_old_with_normal_account(mark_obsolete_accounts: MarkObsoleteAccoun
 #[test_case(MarkObsoleteAccounts::Enabled)]
 #[test_case(MarkObsoleteAccounts::Disabled)]
 fn test_clean_old_with_zero_lamport_account(mark_obsolete_accounts: MarkObsoleteAccounts) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_with_config(
         Vec::new(),
@@ -1567,7 +1567,7 @@ fn test_clean_old_with_zero_lamport_account(mark_obsolete_accounts: MarkObsolete
 fn test_clean_old_with_both_normal_and_zero_lamport_accounts(
     mark_obsolete_accounts: MarkObsoleteAccounts,
 ) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut accounts = AccountsDb {
         account_indexes: spl_token_mint_index_enabled(),
@@ -1718,7 +1718,7 @@ fn test_clean_old_with_both_normal_and_zero_lamport_accounts(
 #[test_case(MarkObsoleteAccounts::Enabled)]
 #[test_case(MarkObsoleteAccounts::Disabled)]
 fn test_clean_max_slot_zero_lamport_account(mark_obsolete_accounts: MarkObsoleteAccounts) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let accounts = AccountsDb::new_with_config(
         Vec::new(),
@@ -1772,7 +1772,7 @@ fn assert_no_stores(accounts: &AccountsDb, slot: Slot) {
 
 #[test]
 fn test_accounts_db_purge_keep_live() {
-    solana_logger::setup();
+    agave_logger::setup();
     let some_lamport = 223;
     let zero_lamport = 0;
     let no_data = 0;
@@ -1854,7 +1854,7 @@ fn test_accounts_db_purge_keep_live() {
 
 #[test]
 fn test_accounts_db_purge1() {
-    solana_logger::setup();
+    agave_logger::setup();
     let some_lamport = 223;
     let zero_lamport = 0;
     let no_data = 0;
@@ -1954,7 +1954,7 @@ fn test_store_account_stress() {
 
 #[test]
 fn test_accountsdb_scan_accounts() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
     let key = Pubkey::default();
     let key0 = solana_pubkey::new_rand();
@@ -1999,7 +1999,7 @@ fn test_accountsdb_scan_accounts() {
 
 #[test]
 fn test_cleanup_key_not_removed() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
 
     let key = Pubkey::default();
@@ -2034,7 +2034,7 @@ fn test_cleanup_key_not_removed() {
 
 #[test]
 fn test_store_large_account() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
 
     let key = Pubkey::default();
@@ -2105,7 +2105,7 @@ pub static EPOCH_SCHEDULE: std::sync::LazyLock<EpochSchedule> =
 #[test]
 fn test_verify_bank_capitalization() {
     for pass in 0..2 {
-        solana_logger::setup();
+        agave_logger::setup();
         let db = AccountsDb::new_single_for_tests();
 
         let key = solana_pubkey::new_rand();
@@ -2144,7 +2144,7 @@ fn test_verify_bank_capitalization() {
 }
 #[test]
 fn test_storage_finder() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb {
         file_size: 16 * 1024,
         ..AccountsDb::new_single_for_tests()
@@ -2413,7 +2413,7 @@ fn test_shrink_all_slots_none() {
 
 #[test]
 fn test_shrink_candidate_slots() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut accounts = AccountsDb::new_single_for_tests();
 
@@ -2480,7 +2480,7 @@ fn test_shrink_candidate_slots() {
 /// bytes of the two remaining alive ancient accounts.
 #[test]
 fn test_shrink_candidate_slots_with_dead_ancient_account() {
-    solana_logger::setup();
+    agave_logger::setup();
     let epoch_schedule = EpochSchedule::default();
     let db = AccountsDb::new_single_for_tests();
     const ACCOUNT_DATA_SIZES: &[usize] = &[1000, 2000, 150];
@@ -2557,7 +2557,7 @@ fn test_shrink_candidate_slots_with_dead_ancient_account() {
 #[test]
 fn test_select_candidates_by_total_usage_no_candidates() {
     // no input candidates -- none should be selected
-    solana_logger::setup();
+    agave_logger::setup();
     let candidates = ShrinkCandidates::default();
     let db = AccountsDb::new_single_for_tests();
 
@@ -2572,7 +2572,7 @@ fn test_select_candidates_by_total_usage_no_candidates() {
 #[test_case(StorageAccess::File)]
 fn test_select_candidates_by_total_usage_3_way_split_condition(storage_access: StorageAccess) {
     // three candidates, one selected for shrink, one is put back to the candidate list and one is ignored
-    solana_logger::setup();
+    agave_logger::setup();
     let mut candidates = ShrinkCandidates::default();
     let db = AccountsDb::new_single_for_tests();
 
@@ -2639,7 +2639,7 @@ fn test_select_candidates_by_total_usage_3_way_split_condition(storage_access: S
 #[test_case(StorageAccess::File)]
 fn test_select_candidates_by_total_usage_2_way_split_condition(storage_access: StorageAccess) {
     // three candidates, 2 are selected for shrink, one is ignored
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
     let mut candidates = ShrinkCandidates::default();
 
@@ -2703,7 +2703,7 @@ fn test_select_candidates_by_total_usage_2_way_split_condition(storage_access: S
 #[test_case(StorageAccess::File)]
 fn test_select_candidates_by_total_usage_all_clean(storage_access: StorageAccess) {
     // 2 candidates, they must be selected to achieve the target alive ratio
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
     let mut candidates = ShrinkCandidates::default();
 
@@ -2752,7 +2752,7 @@ fn test_select_candidates_by_total_usage_all_clean(storage_access: StorageAccess
 
 #[test]
 fn test_delete_dependencies() {
-    solana_logger::setup();
+    agave_logger::setup();
     let accounts_index = AccountsIndex::<AccountInfo, AccountInfo>::default_for_tests();
     let key0 = Pubkey::new_from_array([0u8; 32]);
     let key1 = Pubkey::new_from_array([1u8; 32]);
@@ -2904,7 +2904,7 @@ fn test_account_balance_for_capitalization_native_program() {
 
 #[test]
 fn test_store_overhead() {
-    solana_logger::setup();
+    agave_logger::setup();
     let accounts = AccountsDb::new_single_for_tests();
     let account = AccountSharedData::default();
     let pubkey = solana_pubkey::new_rand();
@@ -2918,7 +2918,7 @@ fn test_store_overhead() {
 
 #[test]
 fn test_store_clean_after_shrink() {
-    solana_logger::setup();
+    agave_logger::setup();
     let accounts = AccountsDb::new_single_for_tests();
     let epoch_schedule = EpochSchedule::default();
 
@@ -2985,7 +2985,7 @@ fn test_wrapping_storage_id() {
 #[test]
 #[should_panic(expected = "We've run out of storage ids!")]
 fn test_reuse_storage_id() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
 
     let zero_lamport_account = AccountSharedData::new(0, 0, AccountSharedData::default().owner());
@@ -4412,7 +4412,7 @@ fn start_load_thread(
 
 #[test]
 fn test_load_account_and_cache_flush_race() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut db = AccountsDb::new_single_for_tests();
     db.load_delay = RACY_SLEEP_MS;
@@ -4723,7 +4723,7 @@ fn test_cache_flush_remove_unrooted_race_multiple_slots() {
 
 #[test]
 fn test_collect_uncleaned_slots_up_to_slot() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
 
     let slot1 = 11;
@@ -4753,7 +4753,7 @@ fn test_collect_uncleaned_slots_up_to_slot() {
 
 #[test]
 fn test_remove_uncleaned_slots_and_collect_pubkeys_up_to_slot() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
 
     let slot1 = 11;
@@ -4800,7 +4800,7 @@ fn test_remove_uncleaned_slots_and_collect_pubkeys_up_to_slot() {
 #[test_case(StorageAccess::Mmap)]
 #[test_case(StorageAccess::File)]
 fn test_shrink_productive(storage_access: StorageAccess) {
-    solana_logger::setup();
+    agave_logger::setup();
     let path = Path::new("");
     let file_size = 100;
     let slot = 11;
@@ -4836,7 +4836,7 @@ fn test_shrink_productive(storage_access: StorageAccess) {
 #[test_case(StorageAccess::Mmap)]
 #[test_case(StorageAccess::File)]
 fn test_is_candidate_for_shrink(storage_access: StorageAccess) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut accounts = AccountsDb::new_single_for_tests();
     let common_store_path = Path::new("");
@@ -5185,7 +5185,7 @@ define_accounts_db_test!(
 
 #[test]
 fn test_filter_zero_lamport_clean_for_incremental_snapshots() {
-    solana_logger::setup();
+    agave_logger::setup();
     let slot = 10;
 
     struct TestParameters {
@@ -5773,7 +5773,7 @@ define_accounts_db_test!(test_get_sorted_potential_ancient_slots, |db| {
 
 #[test]
 fn test_shrink_collect_simple() {
-    solana_logger::setup();
+    agave_logger::setup();
     let account_counts = [
         1,
         SHRINK_COLLECT_CHUNK_SIZE,
@@ -5973,7 +5973,7 @@ fn test_shrink_collect_simple() {
 
 #[test]
 fn test_shrink_collect_with_obsolete_accounts() {
-    solana_logger::setup();
+    agave_logger::setup();
     let account_count = 100;
     let pubkeys: Vec<_> = iter::repeat_with(Pubkey::new_unique)
         .take(account_count)
@@ -6267,7 +6267,7 @@ pub(crate) fn create_db_with_storages_and_index(
     num_slots: usize,
     account_data_size: Option<u64>,
 ) -> (AccountsDb, Slot) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let db = AccountsDb::new_single_for_tests();
 
@@ -6320,7 +6320,7 @@ fn get_one_ancient_append_vec_and_others(num_normal_slots: usize) -> (AccountsDb
 
 #[test]
 fn test_handle_dropped_roots_for_ancient() {
-    solana_logger::setup();
+    agave_logger::setup();
     let db = AccountsDb::new_single_for_tests();
     db.handle_dropped_roots_for_ancient(std::iter::empty::<Slot>());
     let slot0 = 0;
@@ -6339,7 +6339,7 @@ fn insert_store(db: &AccountsDb, append_vec: Arc<AccountStorageEntry>) {
 #[test_case(StorageAccess::File)]
 #[should_panic(expected = "self.storage.remove")]
 fn test_handle_dropped_roots_for_ancient_assert(storage_access: StorageAccess) {
-    solana_logger::setup();
+    agave_logger::setup();
     let common_store_path = Path::new("");
     let store_file_size = 10_000;
     let entry = Arc::new(AccountStorageEntry::new(

+ 4 - 4
accounts-db/src/accounts_index.rs

@@ -2780,7 +2780,7 @@ pub mod tests {
 
     #[test]
     fn test_update_new_slot() {
-        solana_logger::setup();
+        agave_logger::setup();
         let key = solana_pubkey::new_rand();
         let index = AccountsIndex::<bool, bool>::default_for_tests();
         let ancestors = vec![(0, 0)].into_iter().collect();
@@ -3156,7 +3156,7 @@ pub mod tests {
 
     #[test]
     fn test_reclaim_older_items_in_slot_list() {
-        solana_logger::setup();
+        agave_logger::setup();
         let key = solana_pubkey::new_rand();
         let index = AccountsIndex::<u64, u64>::default_for_tests();
         let mut gc = ReclaimsSlotList::new();
@@ -3249,7 +3249,7 @@ pub mod tests {
 
     #[test]
     fn test_reclaim_do_not_reclaim_cached_other_slot() {
-        solana_logger::setup();
+        agave_logger::setup();
         let key = solana_pubkey::new_rand();
         let index =
             AccountsIndex::<CacheableIndexValueTest, CacheableIndexValueTest>::default_for_tests();
@@ -3925,7 +3925,7 @@ pub mod tests {
 
     #[test]
     fn test_clean_rooted_entries_return() {
-        solana_logger::setup();
+        agave_logger::setup();
         let value = true;
         let key = solana_pubkey::new_rand();
         let key_unknown = solana_pubkey::new_rand();

+ 5 - 5
accounts-db/src/accounts_index/in_mem_accounts_index.rs

@@ -1536,7 +1536,7 @@ mod tests {
 
     #[test]
     fn test_update_slot_list_other_populate_reclaims() {
-        solana_logger::setup();
+        agave_logger::setup();
         let reclaim = UpsertReclaim::PopulateReclaims;
         let new_slot = 5;
         let info = 1;
@@ -1742,7 +1742,7 @@ mod tests {
 
     #[test]
     fn test_gather_possible_evictions() {
-        solana_logger::setup();
+        agave_logger::setup();
         let startup = false;
         let ref_count = 1;
         let map: HashMap<_, _> = (0..=255)
@@ -1799,7 +1799,7 @@ mod tests {
 
     #[test]
     fn test_should_evict_from_mem() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bucket = new_for_test::<u64>();
         let mut startup = false;
         let mut current_age = 0;
@@ -1888,7 +1888,7 @@ mod tests {
 
     #[test]
     fn test_age() {
-        solana_logger::setup();
+        agave_logger::setup();
         let test = new_for_test::<u64>();
         assert!(test.get_should_age(test.storage.current_age()));
         assert_eq!(test.storage.count_buckets_flushed(), 0);
@@ -1911,7 +1911,7 @@ mod tests {
 
     #[test]
     fn test_update_slot_list_other_reclaim_old_slots() {
-        solana_logger::setup();
+        agave_logger::setup();
         let reclaim = UpsertReclaim::ReclaimOldSlots;
         let new_slot = 5;
         let info = 1;

+ 2 - 2
accounts-db/src/ancestors.rs

@@ -129,7 +129,7 @@ pub mod tests {
 
     #[test]
     fn test_ancestors_permutations() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut ancestors = Ancestors::default();
         let mut hash = HashMap::new();
 
@@ -194,7 +194,7 @@ pub mod tests {
 
     #[test]
     fn test_ancestors_smaller() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         for width in 0..34 {
             let mut hash = HashSet::new();

+ 6 - 6
accounts-db/src/ancient_append_vecs.rs

@@ -1286,7 +1286,7 @@ pub mod tests {
         // n slots
         // m accounts per slot
         // divide into different ideal sizes so that we combine multiple slots sometimes and combine partial slots
-        solana_logger::setup();
+        agave_logger::setup();
         let total_accounts_per_storage = 10;
         let account_size = 184;
         for num_slots in 0..4 {
@@ -1394,7 +1394,7 @@ pub mod tests {
         // each account has different size
         // divide into different ideal sizes so that we combine multiple slots sometimes and combine partial slots
         // compare at end that all accounts are in result exactly once
-        solana_logger::setup();
+        agave_logger::setup();
         let total_accounts_per_storage = 10;
         let account_size = 184;
         for num_slots in 0..4 {
@@ -1630,7 +1630,7 @@ pub mod tests {
         // n storages
         // 1 account each
         // all accounts have 1 ref or all accounts have 2 refs
-        solana_logger::setup();
+        agave_logger::setup();
 
         let data_size = 48;
         let alive_bytes_per_slot = aligned_stored_size(data_size as usize) as u64;
@@ -2138,7 +2138,7 @@ pub mod tests {
 
     #[test]
     fn test_calc_accounts_to_combine_opposite() {
-        solana_logger::setup();
+        agave_logger::setup();
         // 1 storage
         // 2 accounts
         // 1 with 1 ref
@@ -2873,7 +2873,7 @@ pub mod tests {
 
     #[test]
     fn test_truncate_to_max_storages() {
-        solana_logger::setup();
+        agave_logger::setup();
         for filter in [false, true] {
             let ideal_storage_size_large = get_ancient_append_vec_capacity();
             let mut infos = create_test_infos(1);
@@ -3490,7 +3490,7 @@ pub mod tests {
         // NOTE: The recycler has been removed.  Creating this many extra storages is no longer
         // necessary, but also does no harm either.
         const MAX_RECYCLE_STORES: usize = 1000;
-        solana_logger::setup();
+        agave_logger::setup();
 
         // When we pack ancient append vecs, the packed append vecs are recycled first if possible. This means they aren't dropped directly.
         // This test tests that we are releasing Arc refcounts for storages when we pack them into ancient append vecs.

+ 1 - 1
accounts-db/src/append_vec.rs

@@ -1728,7 +1728,7 @@ pub mod tests {
         // So, the sanitizing on load behavior can be tested by capturing [u8] that would be created if such a write was possible (as it used to be).
         // The contents of [u8] written by an append vec cannot easily or reasonably change frequently since it has released a long time.
         /*
-            solana_logger::setup();
+            agave_logger::setup();
             // uncomment this code to generate the invalid append vec that will fail on load
             let file = get_append_vec_path("test_append");
             let path = &file.path;

+ 6 - 6
accounts-db/src/bucket_map_holder.rs

@@ -383,7 +383,7 @@ pub mod tests {
 
     #[test]
     fn test_next_bucket_to_flush() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 4;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         let visited = (0..bins)
@@ -406,7 +406,7 @@ pub mod tests {
 
     #[test]
     fn test_ages() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 4;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         assert_eq!(0, test.current_age());
@@ -426,7 +426,7 @@ pub mod tests {
 
     #[test]
     fn test_age_increment() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 4;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         for age in 0..513 {
@@ -447,7 +447,7 @@ pub mod tests {
 
     #[test]
     fn test_throttle() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 128;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         let bins = test.bins as u64;
@@ -487,7 +487,7 @@ pub mod tests {
 
     #[test]
     fn test_age_time() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 1;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         let threads = 2;
@@ -519,7 +519,7 @@ pub mod tests {
 
     #[test]
     fn test_age_broad() {
-        solana_logger::setup();
+        agave_logger::setup();
         let bins = 4;
         let test = BucketMapHolder::<u64, u64>::new(bins, &AccountsIndexConfig::default(), 1);
         assert_eq!(test.current_age(), 0);

+ 11 - 11
accounts-db/src/rolling_bit_field.rs

@@ -364,7 +364,7 @@ pub mod tests {
 
     #[test]
     fn test_get_all_less_than() {
-        solana_logger::setup();
+        agave_logger::setup();
         let len = 16;
         let mut bitfield = RollingBitField::new(len);
         assert!(bitfield.get_all_less_than(0).is_empty());
@@ -417,7 +417,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_delete_non_excess() {
-        solana_logger::setup();
+        agave_logger::setup();
         let len = 16;
         let mut bitfield = RollingBitField::new(len);
         assert_eq!(bitfield.min(), None);
@@ -461,7 +461,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_insert_excess() {
-        solana_logger::setup();
+        agave_logger::setup();
         let len = 16;
         let mut bitfield = RollingBitField::new(len);
 
@@ -493,7 +493,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_permutations() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut bitfield = RollingBitField::new(2097152);
         let mut hash = HashSet::new();
 
@@ -593,7 +593,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_insert_wide() {
-        solana_logger::setup();
+        agave_logger::setup();
         let width = 16;
         let start = 0;
         let mut tester = setup_wide(width, start);
@@ -612,7 +612,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_insert_wide_before() {
-        solana_logger::setup();
+        agave_logger::setup();
         let width = 16;
         let start = 100;
         let mut bitfield = setup_wide(width, start).bitfield;
@@ -627,7 +627,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_insert_wide_before_ok() {
-        solana_logger::setup();
+        agave_logger::setup();
         let width = 16;
         let start = 100;
         let mut bitfield = setup_wide(width, start).bitfield;
@@ -678,7 +678,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_excess2() {
-        solana_logger::setup();
+        agave_logger::setup();
         let width = 16;
         let mut tester = setup_empty(width);
         let slot = 100;
@@ -712,7 +712,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_excess() {
-        solana_logger::setup();
+        agave_logger::setup();
         // start at slot 0 or a separate, higher slot
         for width in [16, 4194304].iter() {
             let width = *width;
@@ -846,7 +846,7 @@ pub mod tests {
 
     #[test]
     fn test_bitfield_functionality() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         // bitfield sizes are powers of 2, cycle through values of 1, 2, 4, .. 2^9
         for power in 0..10 {
@@ -1009,7 +1009,7 @@ pub mod tests {
     #[test]
     fn test_bitfield_smaller() {
         // smaller bitfield, fewer entries, including 0
-        solana_logger::setup();
+        agave_logger::setup();
 
         for width in 0..34 {
             let mut bitfield = RollingBitField::new(4096);

+ 1 - 1
banking-bench/Cargo.toml

@@ -20,6 +20,7 @@ frozen-abi = []
 
 [dependencies]
 agave-banking-stage-ingress-types = { workspace = true }
+agave-logger = { workspace = true }
 assert_matches = { workspace = true }
 clap = { version = "3.1.8", features = ["derive", "cargo"] }
 crossbeam-channel = { workspace = true }
@@ -33,7 +34,6 @@ solana-gossip = { workspace = true }
 solana-hash = { workspace = true }
 solana-keypair = { workspace = true }
 solana-ledger = { workspace = true }
-solana-logger = { workspace = true }
 solana-measure = { workspace = true }
 solana-message = { workspace = true }
 solana-perf = { workspace = true }

+ 1 - 1
banking-bench/src/main.rs

@@ -233,7 +233,7 @@ impl PacketsPerIteration {
 
 #[allow(clippy::cognitive_complexity)]
 fn main() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let matches = Command::new(crate_name!())
         .about(crate_description!())

+ 1 - 2
bench-tps/Cargo.toml

@@ -20,6 +20,7 @@ dummy-for-ci-check = []
 frozen-abi = []
 
 [dependencies]
+agave-logger = { workspace = true }
 chrono = { workspace = true }
 clap = { workspace = true }
 crossbeam-channel = { workspace = true }
@@ -30,7 +31,6 @@ rayon = { workspace = true }
 serde = { workspace = true }
 serde_json = { workspace = true }
 serde_yaml = { workspace = true }
-
 solana-account = { workspace = true }
 solana-clap-utils = { workspace = true }
 solana-cli-config = { workspace = true }
@@ -47,7 +47,6 @@ solana-gossip = { workspace = true }
 solana-hash = { workspace = true }
 solana-instruction = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = "=3.0.0"
 solana-measure = { workspace = true }
 solana-message = { workspace = true }
 solana-metrics = { workspace = true }

+ 1 - 1
bench-tps/src/main.rs

@@ -169,7 +169,7 @@ fn create_client(
 }
 
 fn main() {
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
     solana_metrics::set_panic_hook("bench-tps", /*version:*/ None);
 
     let matches = cli::build_args(solana_version::version!()).get_matches();

+ 2 - 2
bench-tps/tests/bench_tps.rs

@@ -46,7 +46,7 @@ fn test_bench_tps_local_cluster(config: Config) {
         program_account(include_bytes!("fixtures/spl_instruction_padding.so")),
     )];
 
-    solana_logger::setup();
+    agave_logger::setup();
 
     let faucet_keypair = Keypair::new();
     let faucet_pubkey = faucet_keypair.pubkey();
@@ -107,7 +107,7 @@ fn test_bench_tps_local_cluster(config: Config) {
 }
 
 fn test_bench_tps_test_validator(config: Config) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();

+ 1 - 1
bench-vote/Cargo.toml

@@ -15,6 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 agave-unstable-api = []
 
 [dependencies]
+agave-logger = { workspace = true }
 bincode = { workspace = true }
 clap = { workspace = true }
 crossbeam-channel = { workspace = true }
@@ -23,7 +24,6 @@ solana-client = { workspace = true }
 solana-connection-cache = { workspace = true }
 solana-hash = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = { workspace = true }
 solana-message = { workspace = true }
 solana-net-utils = { workspace = true }
 solana-pubkey = { workspace = true }

+ 1 - 1
bench-vote/src/main.rs

@@ -184,7 +184,7 @@ fn main() -> Result<()> {
         )
         .get_matches();
 
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut num_sockets = 1usize;
     if let Some(n) = matches.value_of("num-recv-sockets") {

+ 1 - 1
bucket_map/Cargo.toml

@@ -31,10 +31,10 @@ solana-pubkey = { workspace = true }
 tempfile = { workspace = true }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 fs_extra = { workspace = true }
 rayon = { workspace = true }
 solana-bucket-map = { path = ".", features = ["agave-unstable-api", "dev-context-only-utils"] }
-solana-logger = { workspace = true }
 solana-pubkey = { workspace = true, features = ["rand"] }
 
 [[bench]]

+ 2 - 2
bucket_map/src/bucket.rs

@@ -1531,7 +1531,7 @@ mod tests {
     #[test]
     #[should_panic(expected = "index asked to insert the same data twice")]
     fn test_occupy_if_matches_panic() {
-        solana_logger::setup();
+        agave_logger::setup();
         let random = 1;
         let k = Pubkey::from([1u8; 32]);
         let v = 12u64;
@@ -1565,7 +1565,7 @@ mod tests {
     #[should_panic(expected = "batch insertion can only occur prior to any deletes")]
     #[test]
     fn batch_insert_after_delete() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let tmpdir = tempdir().unwrap();
         let paths: Vec<PathBuf> = vec![tmpdir.path().to_path_buf()];

+ 2 - 2
bucket_map/src/bucket_map.rs

@@ -275,7 +275,7 @@ mod tests {
 
     #[test]
     fn bucket_map_test_update_to_0_len() {
-        solana_logger::setup();
+        agave_logger::setup();
         let key = Pubkey::new_unique();
         let config = BucketMapConfig::new(1 << 1);
         let index = BucketMap::new(config);
@@ -390,7 +390,7 @@ mod tests {
     #[test]
     fn hashmap_compare() {
         use std::sync::Mutex;
-        solana_logger::setup();
+        agave_logger::setup();
         for mut use_batch_insert in [true, false] {
             let maps = (0..2)
                 .map(|max_buckets_pow2| {

+ 1 - 1
bucket_map/src/bucket_storage.rs

@@ -628,7 +628,7 @@ mod test {
             count.clone(),
         )
         .is_none());
-        solana_logger::setup();
+        agave_logger::setup();
         for len in [0, 1, 47, 48, 49, 4097] {
             // create a zero len file. That will fail to load since it is too small.
             let path = tmpdir.path().join("small");

+ 1 - 1
cargo-registry/Cargo.toml

@@ -20,6 +20,7 @@ remote-wallet-hidraw = ["solana-remote-wallet/linux-static-hidraw"]
 remote-wallet-libusb = ["solana-remote-wallet/linux-static-libusb"]
 
 [dependencies]
+agave-logger = { workspace = true }
 clap = { workspace = true }
 flate2 = { workspace = true }
 hex = { workspace = true }
@@ -34,7 +35,6 @@ solana-cli-config = { workspace = true }
 solana-cli-output = { workspace = true }
 solana-commitment-config = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = { workspace = true }
 solana-pubkey = { workspace = true }
 solana-remote-wallet = { workspace = true }
 solana-rpc-client = { workspace = true, features = ["default"] }

+ 1 - 1
cargo-registry/src/main.rs

@@ -263,7 +263,7 @@ impl CargoRegistryService {
 
 #[tokio::main]
 async fn main() {
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
     let client = Arc::new(Client::new().expect("Failed to get RPC Client instance"));
 
     let bind_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), client.port);

+ 1 - 1
cli/Cargo.toml

@@ -25,6 +25,7 @@ remote-wallet-libusb = ["solana-remote-wallet/linux-static-libusb"]
 
 [dependencies]
 agave-feature-set = { workspace = true }
+agave-logger = { workspace = true }
 agave-syscalls = { workspace = true }
 bincode = { workspace = true }
 bs58 = { workspace = true }
@@ -67,7 +68,6 @@ solana-keypair = "=3.0.1"
 solana-loader-v3-interface = { version = "=6.1.0", features = ["bincode"] }
 solana-loader-v4-interface = "=3.1.0"
 solana-loader-v4-program = { workspace = true }
-solana-logger = "=3.0.0"
 solana-message = "=3.0.1"
 solana-native-token = "=3.0.0"
 solana-nonce = "=3.0.0"

+ 1 - 1
cli/src/main.rs

@@ -243,7 +243,7 @@ pub fn parse_args<'a>(
 }
 
 fn main() -> Result<(), Box<dyn error::Error>> {
-    solana_logger::setup_with_default("off");
+    agave_logger::setup_with_default("off");
     let matches = get_clap_app(
         crate_name!(),
         crate_description!(),

+ 1 - 1
cli/src/program.rs

@@ -4532,7 +4532,7 @@ mod tests {
 
     #[test]
     fn test_cli_keypair_file() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let default_keypair = Keypair::new();
         let program_pubkey = Keypair::new();

+ 1 - 1
cli/tests/cluster_query.rs

@@ -20,7 +20,7 @@ use {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_ping(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
     let fee = FeeStructure::default().get_max_fee(1, 0);
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();

+ 1 - 1
cli/tests/nonce.rs

@@ -215,7 +215,7 @@ fn test_nonce(seed: Option<String>, use_nonce_authority: bool, compute_unit_pric
 #[test]
 fn test_create_account_with_seed() {
     const ONE_SIG_FEE: u64 = 5000;
-    solana_logger::setup();
+    agave_logger::setup();
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
     let faucet_addr = run_local_faucet_with_unique_port_for_tests(mint_keypair);

+ 16 - 16
cli/tests/program.rs

@@ -97,7 +97,7 @@ fn expect_account_absent(rpc_client: &RpcClient, pubkey: Pubkey, absent_because:
 
 #[test]
 fn test_cli_program_deploy_non_upgradeable() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -301,7 +301,7 @@ fn test_cli_program_deploy_non_upgradeable() {
 
 #[test]
 fn test_cli_program_deploy_no_authority() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -403,7 +403,7 @@ fn test_cli_program_deploy_no_authority() {
 #[test_case(false, true; "Feature disabled, skip preflight")]
 #[test_case(false, false; "Feature disabled, don't skip preflight")]
 fn test_cli_program_deploy_feature(enable_feature: bool, skip_preflight: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut program_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     program_path.push("tests");
@@ -522,7 +522,7 @@ fn test_cli_program_deploy_feature(enable_feature: bool, skip_preflight: bool) {
 #[test_case(true; "Feature enabled")]
 #[test_case(false; "Feature disabled")]
 fn test_cli_program_upgrade_with_feature(enable_feature: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -687,7 +687,7 @@ fn test_cli_program_upgrade_with_feature(enable_feature: bool) {
 
 #[test]
 fn test_cli_program_deploy_with_authority() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -1082,7 +1082,7 @@ fn test_cli_program_deploy_with_authority() {
 #[test_case(true; "Skip preflight")]
 #[test_case(false; "Dont skip preflight")]
 fn test_cli_program_upgrade_auto_extend(skip_preflight: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -1254,7 +1254,7 @@ fn test_cli_program_upgrade_auto_extend(skip_preflight: bool) {
 
 #[test]
 fn test_cli_program_close_program() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -1366,7 +1366,7 @@ fn test_cli_program_close_program() {
 
 #[test]
 fn test_cli_program_extend_program() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -1547,7 +1547,7 @@ fn test_cli_program_extend_program() {
 
 #[test]
 fn test_cli_program_migrate_program() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -1625,7 +1625,7 @@ fn test_cli_program_migrate_program() {
 
 #[test]
 fn test_cli_program_write_buffer() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -2013,7 +2013,7 @@ fn test_cli_program_write_buffer() {
 #[test_case(true; "Feature enabled")]
 #[test_case(false; "Feature disabled")]
 fn test_cli_program_write_buffer_feature(enable_feature: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut program_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     program_path.push("tests");
@@ -2107,7 +2107,7 @@ fn test_cli_program_write_buffer_feature(enable_feature: bool) {
 
 #[test]
 fn test_cli_program_set_buffer_authority() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -2278,7 +2278,7 @@ fn test_cli_program_set_buffer_authority() {
 
 #[test]
 fn test_cli_program_mismatch_buffer_authority() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -2397,7 +2397,7 @@ fn test_cli_program_mismatch_buffer_authority() {
 #[test_case(true; "offline signer will be fee payer")]
 #[test_case(false; "online signer will be fee payer")]
 fn test_cli_program_deploy_with_offline_signing(use_offline_signer_as_fee_payer: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -2594,7 +2594,7 @@ fn test_cli_program_deploy_with_offline_signing(use_offline_signer_as_fee_payer:
 
 #[test]
 fn test_cli_program_show() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");
@@ -2790,7 +2790,7 @@ fn test_cli_program_show() {
 
 #[test]
 fn test_cli_program_dump() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mut noop_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     noop_path.push("tests");

+ 12 - 12
cli/tests/stake.rs

@@ -200,7 +200,7 @@ fn test_stake_delegation_force() {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_seed_stake_delegation_and_deactivation(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -295,7 +295,7 @@ fn test_seed_stake_delegation_and_deactivation(compute_unit_price: Option<u64>)
 
 #[test]
 fn test_stake_delegation_and_withdraw_available() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -464,7 +464,7 @@ fn test_stake_delegation_and_withdraw_available() {
 
 #[test]
 fn test_stake_delegation_and_withdraw_all() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -629,7 +629,7 @@ fn test_stake_delegation_and_withdraw_all() {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_stake_delegation_and_deactivation(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -721,7 +721,7 @@ fn test_stake_delegation_and_deactivation(compute_unit_price: Option<u64>) {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_offline_stake_delegation_and_deactivation(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -881,7 +881,7 @@ fn test_offline_stake_delegation_and_deactivation(compute_unit_price: Option<u64
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_nonced_stake_delegation_and_deactivation(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -1010,7 +1010,7 @@ fn test_nonced_stake_delegation_and_deactivation(compute_unit_price: Option<u64>
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_stake_authorize(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -1338,7 +1338,7 @@ fn test_stake_authorize(compute_unit_price: Option<u64>) {
 
 #[test]
 fn test_stake_authorize_with_fee_payer() {
-    solana_logger::setup();
+    agave_logger::setup();
     let fee_one_sig = FeeStructure::default().get_max_fee(1, 0);
     let fee_two_sig = FeeStructure::default().get_max_fee(2, 0);
 
@@ -1520,7 +1520,7 @@ fn test_stake_authorize_with_fee_payer() {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_stake_split(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -1681,7 +1681,7 @@ fn test_stake_split(compute_unit_price: Option<u64>) {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_stake_set_lockup(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -1969,7 +1969,7 @@ fn test_stake_set_lockup(compute_unit_price: Option<u64>) {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_offline_nonced_create_stake_account_and_withdraw(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -2212,7 +2212,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw(compute_unit_price: Opt
 
 #[test]
 fn test_stake_checked_instructions() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();

+ 5 - 5
cli/tests/transfer.rs

@@ -29,7 +29,7 @@ use {
 #[test_case(true; "Skip Preflight")]
 #[test_case(false; "Don`t skip Preflight")]
 fn test_transfer(skip_preflight: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
     let fee_one_sig = FeeStructure::default().get_max_fee(1, 0);
     let fee_two_sig = FeeStructure::default().get_max_fee(2, 0);
     let mint_keypair = Keypair::new();
@@ -327,7 +327,7 @@ fn test_transfer(skip_preflight: bool) {
 
 #[test]
 fn test_transfer_multisession_signing() {
-    solana_logger::setup();
+    agave_logger::setup();
     let fee_one_sig = FeeStructure::default().get_max_fee(1, 0);
     let fee_two_sig = FeeStructure::default().get_max_fee(2, 0);
     let mint_keypair = Keypair::new();
@@ -477,7 +477,7 @@ fn test_transfer_multisession_signing() {
 #[test_case(None; "default")]
 #[test_case(Some(100_000); "with_compute_unit_price")]
 fn test_transfer_all(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
     let lamports_per_signature = FeeStructure::default().get_max_fee(1, 0);
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
@@ -555,7 +555,7 @@ fn test_transfer_all(compute_unit_price: Option<u64>) {
 
 #[test]
 fn test_transfer_unfunded_recipient() {
-    solana_logger::setup();
+    agave_logger::setup();
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();
     let faucet_addr = run_local_faucet_with_unique_port_for_tests(mint_keypair);
@@ -610,7 +610,7 @@ fn test_transfer_unfunded_recipient() {
 
 #[test]
 fn test_transfer_with_seed() {
-    solana_logger::setup();
+    agave_logger::setup();
     let fee = FeeStructure::default().get_max_fee(1, 0);
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();

+ 1 - 1
cli/tests/validator_info.rs

@@ -17,7 +17,7 @@ use {
 #[test_case(None; "base")]
 #[test_case(Some(1_000_000); "with_compute_unit_price")]
 fn test_publish(compute_unit_price: Option<u64>) {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let mint_keypair = Keypair::new();
     let mint_pubkey = mint_keypair.pubkey();

+ 1 - 1
client-test/Cargo.toml

@@ -48,7 +48,7 @@ tokio = { workspace = true, features = ["full"] }
 tungstenite = { workspace = true, features = ["rustls-tls-webpki-roots"] }
 
 [dev-dependencies]
-solana-logger = { workspace = true }
+agave-logger = { workspace = true }
 solana-net-utils = { workspace = true }
 solana-rpc = { workspace = true, features = ["dev-context-only-utils"] }
 solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }

+ 1 - 1
client-test/tests/client.rs

@@ -57,7 +57,7 @@ fn pubsub_addr() -> SocketAddr {
 
 #[test]
 fn test_rpc_client() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let alice = Keypair::new();
     let test_validator =

+ 2 - 2
client-test/tests/send_and_confirm_transactions_in_parallel.rs

@@ -36,7 +36,7 @@ fn create_messages(from: Pubkey, to: Pubkey) -> (Vec<Message>, u64) {
 
 #[test]
 fn test_send_and_confirm_transactions_in_parallel_without_tpu_client() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let alice = Keypair::new();
     let test_validator =
@@ -93,7 +93,7 @@ fn test_send_and_confirm_transactions_in_parallel_without_tpu_client() {
 
 #[test]
 fn test_send_and_confirm_transactions_in_parallel_with_tpu_client() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let alice = Keypair::new();
     let test_validator =

+ 1 - 1
connection-cache/Cargo.toml

@@ -31,6 +31,6 @@ thiserror = { workspace = true }
 tokio = { workspace = true, features = ["full"] }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 rand_chacha = { workspace = true }
-solana-logger = { workspace = true }
 solana-net-utils = { workspace = true }

+ 1 - 1
connection-cache/src/connection_cache.rs

@@ -687,7 +687,7 @@ mod tests {
 
     #[test]
     fn test_connection_cache() {
-        solana_logger::setup();
+        agave_logger::setup();
         // Allow the test to run deterministically
         // with the same pseudorandom sequence between runs
         // and on different platforms - the cryptographic security

+ 1 - 1
core/Cargo.toml

@@ -189,6 +189,7 @@ shaq = { workspace = true }
 sysctl = { workspace = true }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 agave-reserved-account-keys = { workspace = true }
 bencher = { workspace = true }
 criterion = { workspace = true }
@@ -205,7 +206,6 @@ solana-core = { path = ".", features = ["agave-unstable-api", "dev-context-only-
 solana-cost-model = { workspace = true, features = ["dev-context-only-utils"] }
 solana-keypair = { workspace = true }
 solana-ledger = { workspace = true, features = ["dev-context-only-utils"] }
-solana-logger = { workspace = true }
 solana-net-utils = { workspace = true, features = ["dev-context-only-utils"] }
 solana-poh = { workspace = true, features = ["dev-context-only-utils"] }
 solana-program-binaries = { workspace = true }

+ 1 - 1
core/benches/banking_stage.rs

@@ -139,7 +139,7 @@ fn bench_banking(
     tx_type: TransactionType,
     block_production_method: BlockProductionMethod,
 ) {
-    solana_logger::setup();
+    agave_logger::setup();
     let num_threads = BankingStage::default_num_workers();
     //   a multiple of packet chunk duplicates to avoid races
     const CHUNKS: usize = 8;

+ 2 - 2
core/benches/sigverify_stage.rs

@@ -44,7 +44,7 @@ where
 }
 
 fn run_bench_packet_discard(num_ips: usize, bencher: &mut Bencher) {
-    solana_logger::setup();
+    agave_logger::setup();
     let len = 30 * 1000;
     let chunk_size = 1024;
     let tx = test_tx();
@@ -161,7 +161,7 @@ fn bench_sigverify_stage_without_same_tx(bencher: &mut Bencher) {
 }
 
 fn bench_sigverify_stage(bencher: &mut Bencher, use_same_tx: bool) {
-    solana_logger::setup();
+    agave_logger::setup();
     trace!("start");
     let (packet_s, packet_r) = unbounded();
     let (verified_s, verified_r) = BankingTracer::channel_for_test();

+ 5 - 5
core/src/banking_stage.rs

@@ -759,7 +759,7 @@ mod tests {
 
     #[test]
     fn test_banking_stage_tick() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             mut genesis_config, ..
         } = create_genesis_config(2);
@@ -834,7 +834,7 @@ mod tests {
 
     #[test]
     fn test_banking_stage_entries_only_central_scheduler() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -960,7 +960,7 @@ mod tests {
 
     #[test]
     fn test_banking_stage_entryfication() {
-        solana_logger::setup();
+        agave_logger::setup();
         // In this attack we'll demonstrate that a verifier can interpret the ledger
         // differently if either the server doesn't signal the ledger to add an
         // Entry OR if the verifier tries to parallelize across multiple Entries.
@@ -1072,7 +1072,7 @@ mod tests {
 
     #[test]
     fn test_bank_record_transactions() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo {
             genesis_config,
@@ -1134,7 +1134,7 @@ mod tests {
 
     #[test]
     fn test_vote_storage_full_send() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,

+ 10 - 10
core/src/banking_stage/consumer.rs

@@ -637,7 +637,7 @@ mod tests {
 
     #[test]
     fn test_bank_process_and_record_transactions() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -739,7 +739,7 @@ mod tests {
 
     #[test]
     fn test_bank_nonce_update_blockhash_queried_before_transaction_record() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -822,7 +822,7 @@ mod tests {
 
     #[test]
     fn test_bank_process_and_record_transactions_all_unexecuted() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -886,7 +886,7 @@ mod tests {
     fn test_bank_process_and_record_transactions_cost_tracker(
         relax_intrabatch_account_locks: bool,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -1036,7 +1036,7 @@ mod tests {
         relax_intrabatch_account_locks: bool,
         use_duplicate_transaction: bool,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -1128,7 +1128,7 @@ mod tests {
 
     #[test]
     fn test_process_transactions_instruction_error() {
-        solana_logger::setup();
+        agave_logger::setup();
         let lamports = 10_000;
         let GenesisConfigInfo {
             genesis_config,
@@ -1192,7 +1192,7 @@ mod tests {
         relax_intrabatch_account_locks: bool,
         use_duplicate_transaction: bool,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -1280,7 +1280,7 @@ mod tests {
 
     #[test]
     fn test_process_transactions_returns_unprocessed_txs() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -1355,7 +1355,7 @@ mod tests {
 
     #[test]
     fn test_write_persist_transaction_status() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             mut genesis_config,
             mint_keypair,
@@ -1463,7 +1463,7 @@ mod tests {
 
     #[test]
     fn test_write_persist_loaded_addresses() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,

+ 5 - 5
core/src/banking_stage/qos_service.rs

@@ -606,7 +606,7 @@ mod tests {
 
     #[test]
     fn test_compute_transaction_costs() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         // make a vec of txs
         let keypair = Keypair::new();
@@ -648,7 +648,7 @@ mod tests {
 
     #[test]
     fn test_select_transactions_per_cost() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10);
         let bank = Arc::new(Bank::new_for_tests(&genesis_config));
 
@@ -698,7 +698,7 @@ mod tests {
 
     #[test]
     fn test_update_and_remove_transaction_costs_committed() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10);
         let bank = Arc::new(Bank::new_for_tests(&genesis_config));
 
@@ -778,7 +778,7 @@ mod tests {
 
     #[test]
     fn test_update_and_remove_transaction_costs_not_committed() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10);
         let bank = Arc::new(Bank::new_for_tests(&genesis_config));
 
@@ -824,7 +824,7 @@ mod tests {
 
     #[test]
     fn test_update_and_remove_transaction_costs_mixed_execution() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10);
         let bank = Arc::new(Bank::new_for_tests(&genesis_config));
 

+ 2 - 2
core/src/cluster_info_vote_listener.rs

@@ -767,7 +767,7 @@ mod tests {
 
     #[test]
     fn test_max_vote_tx_fits() {
-        solana_logger::setup();
+        agave_logger::setup();
         let node_keypair = Keypair::new();
         let vote_keypair = Keypair::new();
         let tower_sync = TowerSync::new_from_slot(MAX_LOCKOUT_HISTORY as u64, Hash::default());
@@ -1503,7 +1503,7 @@ mod tests {
 
     #[test]
     fn test_verify_votes_empty() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let bank = Bank::new_for_tests(&genesis_config);
         let bank_forks = BankForks::new_rw_arc(bank);

+ 1 - 1
core/src/cluster_slots_service/cluster_slots.rs

@@ -722,7 +722,7 @@ mod tests {
 
     #[test]
     fn test_best_peer_3() {
-        solana_logger::setup_with_default("info");
+        agave_logger::setup_with_default("info");
         let cs = ClusterSlots::default();
         let pk1 = Pubkey::new_unique();
         let pk2 = Pubkey::new_unique();

+ 7 - 7
core/src/consensus.rs

@@ -2572,7 +2572,7 @@ pub mod test {
 
     #[test]
     fn test_check_vote_threshold_no_skip_lockout_with_new_root() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut tower = Tower::new_for_tests(4, 0.67);
         let mut stakes = HashMap::new();
         for i in 0..(MAX_LOCKOUT_HISTORY as u64 + 1) {
@@ -2793,7 +2793,7 @@ pub mod test {
 
     #[test]
     fn test_check_vote_threshold_lockouts_not_updated() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut tower = Tower::new_for_tests(1, 0.67);
         let stakes = vec![(0, 1), (1, 2)].into_iter().collect();
         tower.record_vote(0, Hash::default());
@@ -3005,7 +3005,7 @@ pub mod test {
 
     #[test]
     fn test_switch_threshold_across_tower_reload() {
-        solana_logger::setup();
+        agave_logger::setup();
         // Init state
         let mut vote_simulator = VoteSimulator::new(2);
         let other_vote_account = vote_simulator.vote_pubkeys[1];
@@ -3262,7 +3262,7 @@ pub mod test {
 
     #[test]
     fn test_reconcile_blockstore_roots_with_tower_normal() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -3298,7 +3298,7 @@ pub mod test {
                     1) from external root (Tower(4))!?"
     )]
     fn test_reconcile_blockstore_roots_with_tower_panic_no_common_root() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -3326,7 +3326,7 @@ pub mod test {
 
     #[test]
     fn test_reconcile_blockstore_roots_with_tower_nop_no_parent() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -3352,7 +3352,7 @@ pub mod test {
 
     #[test]
     fn test_adjust_lockouts_after_replay_future_slots() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut tower = Tower::new_for_tests(10, 0.9);
         tower.record_vote(0, Hash::default());
         tower.record_vote(1, Hash::default());

+ 1 - 1
core/src/mock_alpenglow_consensus.rs

@@ -804,7 +804,7 @@ mod tests {
     fn test_mock_alpenglow_statemachine() {
         let test_timeout = Duration::from_secs(3);
         let max_slots = 5;
-        solana_logger::setup_with("trace");
+        agave_logger::setup_with("trace");
         let num_nodes = 10;
         let keypairs: Vec<Keypair> = (0..num_nodes).map(|_| Keypair::new()).collect();
         let peers: Vec<(Pubkey, UdpSocket)> = keypairs

+ 1 - 1
core/src/repair/repair_response.rs

@@ -61,7 +61,7 @@ mod test {
     };
 
     fn run_test_sigverify_shred_cpu_repair(slot: Slot) {
-        solana_logger::setup();
+        agave_logger::setup();
         let cache = RwLock::new(LruCache::new(/*capacity:*/ 128));
         let keypair = Keypair::new();
         let shred = Shredder::single_shred_for_tests(slot, &keypair);

+ 1 - 1
core/src/repair/repair_service.rs

@@ -1813,7 +1813,7 @@ mod test {
 
     #[test]
     fn test_generate_repairs_for_wen_restart() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
         let max_repairs = 3;

+ 5 - 5
core/src/repair/serve_repair.rs

@@ -1772,7 +1772,7 @@ mod tests {
     /// test run_window_request responds with the right shred, and do not overrun
     pub fn run_highest_window_request(slot: Slot, num_slots: u64, nonce: Nonce) {
         let recycler = PacketBatchRecycler::default();
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
         let handler = StandardRepairHandler::new(blockstore.clone());
@@ -1825,7 +1825,7 @@ mod tests {
         let slot = 2;
         let nonce = 9;
         let recycler = PacketBatchRecycler::default();
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
         let handler = StandardRepairHandler::new(blockstore.clone());
@@ -1992,7 +1992,7 @@ mod tests {
     }
 
     pub fn run_orphan(slot: Slot, num_slots: u64, nonce: Nonce) {
-        solana_logger::setup();
+        agave_logger::setup();
         let recycler = PacketBatchRecycler::default();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
@@ -2046,7 +2046,7 @@ mod tests {
 
     #[test]
     fn run_orphan_corrupted_shred_size() {
-        solana_logger::setup();
+        agave_logger::setup();
         let recycler = PacketBatchRecycler::default();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
@@ -2102,7 +2102,7 @@ mod tests {
                 .unwrap()
         }
 
-        solana_logger::setup();
+        agave_logger::setup();
         let recycler = PacketBatchRecycler::default();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
 

+ 10 - 10
core/src/replay_stage.rs

@@ -4990,7 +4990,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_dead_fork_invalid_slot_tick_count() {
-        solana_logger::setup();
+        agave_logger::setup();
         // Too many ticks per slot
         let res = check_dead_fork(|_keypair, bank| {
             let blockhash = bank.last_blockhash();
@@ -8199,7 +8199,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_replay_stage_last_vote_outside_slot_hashes() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ReplayBlockstoreComponents {
             cluster_info,
             poh_recorder,
@@ -8660,7 +8660,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_dumped_slot_not_causing_panic() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ReplayBlockstoreComponents {
             validator_node_to_vote_keys,
             leader_schedule_cache,
@@ -8956,7 +8956,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_tower_sync_from_bank_failed_switch() {
-        solana_logger::setup_with_default(
+        agave_logger::setup_with_default(
             "error,solana_core::replay_stage=info,solana_core::consensus=info",
         );
         /*
@@ -9037,7 +9037,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_tower_sync_from_bank_failed_lockout() {
-        solana_logger::setup_with_default(
+        agave_logger::setup_with_default(
             "error,solana_core::replay_stage=info,solana_core::consensus=info",
         );
         /*
@@ -9108,7 +9108,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_tower_adopt_from_bank_cache_only_computed() {
-        solana_logger::setup_with_default(
+        agave_logger::setup_with_default(
             "error,solana_core::replay_stage=info,solana_core::consensus=info",
         );
         /*
@@ -9241,7 +9241,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_initialize_progress_and_fork_choice_with_duplicates() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             mut genesis_config, ..
         } = create_genesis_config(123);
@@ -9365,7 +9365,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_skip_leader_slot_for_existing_slot() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ReplayBlockstoreComponents {
             blockstore,
@@ -9730,7 +9730,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_alpenglow_poh_migration_from_leader() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ReplayBlockstoreComponents {
             blockstore,
@@ -9849,7 +9849,7 @@ pub(crate) mod tests {
 
     #[test]
     fn test_alpenglow_poh_migration_from_replay() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ReplayBlockstoreComponents {
             blockstore,

+ 2 - 2
core/src/sigverify_stage.rs

@@ -455,7 +455,7 @@ mod tests {
 
     #[test]
     fn test_packet_discard() {
-        solana_logger::setup();
+        agave_logger::setup();
         let batch_size = 10;
         let mut batch = PinnedPacketBatch::with_capacity(batch_size);
         let packet = Packet::default();
@@ -498,7 +498,7 @@ mod tests {
     }
 
     fn test_sigverify_stage(use_same_tx: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
         trace!("start");
         let (packet_s, packet_r) = unbounded();
         let (verified_s, verified_r) = BankingTracer::channel_for_test();

+ 1 - 1
core/src/tvu.rs

@@ -485,7 +485,7 @@ pub mod tests {
     };
 
     fn test_tvu_exit(enable_wen_restart: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
         let leader = Node::new_localhost();
         let target1_keypair = Keypair::new();
         let target1 = Node::new_localhost_with_pubkey(&target1_keypair.pubkey());

+ 6 - 6
core/src/validator.rs

@@ -2905,7 +2905,7 @@ mod tests {
 
     #[test]
     fn validator_exit() {
-        solana_logger::setup();
+        agave_logger::setup();
         let leader_keypair = Keypair::new();
         let leader_node = Node::new_localhost_with_pubkey(&leader_keypair.pubkey());
 
@@ -2951,7 +2951,7 @@ mod tests {
 
     #[test]
     fn test_should_cleanup_blockstore_incorrect_shred_versions() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
@@ -3086,7 +3086,7 @@ mod tests {
 
     #[test]
     fn test_cleanup_blockstore_incorrect_shred_versions() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let validator_config = ValidatorConfig::default_for_test();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
@@ -3182,7 +3182,7 @@ mod tests {
 
     #[test]
     fn test_wait_for_supermajority() {
-        solana_logger::setup();
+        agave_logger::setup();
         let node_keypair = Arc::new(Keypair::new());
         let cluster_info = ClusterInfo::new(
             ContactInfo::new_localhost(&node_keypair.pubkey(), timestamp()),
@@ -3329,7 +3329,7 @@ mod tests {
 
     #[test]
     fn test_poh_speed() {
-        solana_logger::setup();
+        agave_logger::setup();
         let poh_config = PohConfig {
             target_tick_duration: target_tick_duration(),
             // make PoH rate really fast to cause the panic condition
@@ -3346,7 +3346,7 @@ mod tests {
 
     #[test]
     fn test_poh_speed_no_hashes_per_tick() {
-        solana_logger::setup();
+        agave_logger::setup();
         let poh_config = PohConfig {
             target_tick_duration: target_tick_duration(),
             hashes_per_tick: None,

+ 4 - 4
core/tests/snapshots.rs

@@ -157,7 +157,7 @@ fn run_bank_forks_snapshot_n<F>(last_slot: Slot, f: F, set_root_interval: u64)
 where
     F: Fn(&Bank, &Keypair),
 {
-    solana_logger::setup();
+    agave_logger::setup();
     // Set up snapshotting config
     let snapshot_test_config = SnapshotTestConfig::new(
         SnapshotInterval::Slots(NonZeroU64::new(set_root_interval).unwrap()),
@@ -263,7 +263,7 @@ fn goto_end_of_slot(bank: &Bank) {
 
 #[test]
 fn test_slots_to_snapshot() {
-    solana_logger::setup();
+    agave_logger::setup();
     let num_set_roots = MAX_CACHE_ENTRIES * 2;
 
     for add_root_interval in &[1, 3, 9] {
@@ -355,7 +355,7 @@ fn test_bank_forks_status_cache_snapshot() {
 
 #[test]
 fn test_bank_forks_incremental_snapshot() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     const SET_ROOT_INTERVAL: Slot = 2;
     const INCREMENTAL_SNAPSHOT_ARCHIVE_INTERVAL_SLOTS: Slot = SET_ROOT_INTERVAL * 2;
@@ -553,7 +553,7 @@ fn restore_from_snapshots_and_check_banks_are_equal(
 /// Spin up the background services fully then test taking & verifying snapshots
 #[test]
 fn test_snapshots_with_background_services() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     const SET_ROOT_INTERVAL_SLOTS: Slot = 2;
     const BANK_SNAPSHOT_INTERVAL_SLOTS: Slot = SET_ROOT_INTERVAL_SLOTS * 2;

+ 2 - 2
core/tests/unified_scheduler.rs

@@ -51,7 +51,7 @@ use {
 
 #[test]
 fn test_scheduler_waited_by_drop_bank_service() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     static LOCK_TO_STALL: Mutex<()> = Mutex::new(());
 
@@ -206,7 +206,7 @@ fn test_scheduler_waited_by_drop_bank_service() {
 
 #[test]
 fn test_scheduler_producing_blocks() {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let GenesisConfigInfo {
         genesis_config,

+ 1 - 1
cost-model/Cargo.toml

@@ -66,6 +66,7 @@ solana-transaction-error = { workspace = true }
 solana-vote-program = { workspace = true }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 agave-reserved-account-keys = { workspace = true }
 itertools = { workspace = true }
 rand = "0.8.5"
@@ -78,7 +79,6 @@ solana-compute-budget-program = { workspace = true }
 solana-cost-model = { path = ".", features = ["agave-unstable-api", "dev-context-only-utils"] }
 solana-instruction = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = { workspace = true }
 solana-pubkey = { workspace = true, features = ["rand"] }
 solana-runtime-transaction = { workspace = true, features = [
     "dev-context-only-utils",

+ 1 - 1
cost-model/src/cost_model.rs

@@ -317,7 +317,7 @@ mod tests {
     };
 
     fn test_setup() -> (Keypair, Hash) {
-        solana_logger::setup();
+        agave_logger::setup();
         (Keypair::new(), Hash::new_unique())
     }
 

+ 1 - 1
cost-model/src/cost_tracker.rs

@@ -490,7 +490,7 @@ mod tests {
     }
 
     fn test_setup() -> Keypair {
-        solana_logger::setup();
+        agave_logger::setup();
         Keypair::new()
     }
 

+ 2 - 2
cost-model/src/transaction_cost.rs

@@ -332,7 +332,7 @@ mod tests {
 
     #[test]
     fn test_vote_transaction_cost() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         // Create a sanitized vote transaction.
         let vote_transaction = RuntimeTransaction::try_create(
@@ -352,7 +352,7 @@ mod tests {
 
     #[test]
     fn test_non_vote_transaction_cost() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         // Create a sanitized non-vote transaction.
         let non_vote_transaction = RuntimeTransaction::try_create(

+ 21 - 25
dev-bins/Cargo.lock

@@ -115,6 +115,7 @@ name = "agave-ledger-tool"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-reserved-account-keys",
  "agave-snapshots",
  "agave-syscalls",
@@ -159,7 +160,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-native-token",
@@ -194,6 +194,16 @@ dependencies = [
  "tokio",
 ]
 
+[[package]]
+name = "agave-logger"
+version = "3.1.0"
+dependencies = [
+ "env_logger",
+ "libc",
+ "log",
+ "signal-hook",
+]
+
 [[package]]
 name = "agave-precompiles"
 version = "3.1.0"
@@ -345,6 +355,7 @@ dependencies = [
 name = "agave-votor"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-votor-messages",
  "anyhow",
  "bincode",
@@ -375,7 +386,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-pubkey",
@@ -396,11 +406,11 @@ dependencies = [
 name = "agave-votor-messages"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "serde",
  "solana-bls-signatures",
  "solana-clock",
  "solana-hash",
- "solana-logger",
 ]
 
 [[package]]
@@ -6002,6 +6012,7 @@ name = "solana-banking-bench"
 version = "3.1.0"
 dependencies = [
  "agave-banking-stage-ingress-types",
+ "agave-logger",
  "assert_matches",
  "clap 3.2.25",
  "crossbeam-channel",
@@ -6015,7 +6026,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-perf",
@@ -6110,6 +6120,7 @@ name = "solana-bench-tps"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "chrono",
  "clap 2.34.0",
  "crossbeam-channel",
@@ -6139,7 +6150,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-local-cluster",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-metrics",
@@ -6843,6 +6853,7 @@ dependencies = [
 name = "solana-dos"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "clap 3.2.25",
  "crossbeam-channel",
@@ -6860,7 +6871,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-local-cluster",
- "solana-logger",
  "solana-measure",
  "solana-message",
  "solana-net-utils",
@@ -6975,6 +6985,7 @@ dependencies = [
 name = "solana-faucet"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "bincode",
  "clap 2.34.0",
  "crossbeam-channel",
@@ -6986,7 +6997,6 @@ dependencies = [
  "solana-hash",
  "solana-instruction",
  "solana-keypair",
- "solana-logger",
  "solana-message",
  "solana-metrics",
  "solana-net-utils",
@@ -7056,6 +7066,7 @@ name = "solana-genesis"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "agave-snapshots",
  "base64 0.22.1",
  "bincode",
@@ -7079,7 +7090,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-native-token",
  "solana-poh-config",
  "solana-pubkey",
@@ -7161,6 +7171,7 @@ name = "solana-gossip"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "arrayvec",
  "assert_matches",
  "bincode",
@@ -7191,7 +7202,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-native-token",
@@ -7520,6 +7530,7 @@ dependencies = [
 name = "solana-local-cluster"
 version = "3.1.0"
 dependencies = [
+ "agave-logger",
  "agave-snapshots",
  "crossbeam-channel",
  "itertools 0.12.1",
@@ -7542,7 +7553,6 @@ dependencies = [
  "solana-hash",
  "solana-keypair",
  "solana-ledger",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-net-utils",
@@ -7579,19 +7589,6 @@ dependencies = [
  "trees",
 ]
 
-[[package]]
-name = "solana-logger"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef7421d1092680d72065edbf5c7605856719b021bf5f173656c71febcdd5d003"
-dependencies = [
- "env_logger",
- "lazy_static",
- "libc",
- "log",
- "signal-hook",
-]
-
 [[package]]
 name = "solana-measure"
 version = "3.1.0"
@@ -7946,6 +7943,7 @@ name = "solana-program-test"
 version = "3.1.0"
 dependencies = [
  "agave-feature-set",
+ "agave-logger",
  "assert_matches",
  "async-trait",
  "base64 0.22.1",
@@ -7972,7 +7970,6 @@ dependencies = [
  "solana-instruction",
  "solana-keypair",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-message",
  "solana-msg",
  "solana-native-token",
@@ -9097,7 +9094,6 @@ dependencies = [
  "solana-keypair",
  "solana-ledger",
  "solana-loader-v3-interface",
- "solana-logger",
  "solana-message",
  "solana-native-token",
  "solana-net-utils",

+ 1 - 1
dev-bins/Cargo.toml

@@ -38,6 +38,7 @@ used_underscore_binding = "deny"
 [workspace.dependencies]
 agave-banking-stage-ingress-types = { path = "../banking-stage-ingress-types", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-feature-set = { path = "../feature-set", version = "=3.1.0", features = ["agave-unstable-api"] }
+agave-logger = { path = "../logger", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-reserved-account-keys = { path = "../reserved-account-keys", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-snapshots = { path = "../snapshots", version = "=3.1.0", features = ["agave-unstable-api"] }
 agave-syscalls = { path = "../syscalls", version = "=3.1.0", features = ["agave-unstable-api"] }
@@ -101,7 +102,6 @@ solana-keypair = "3.0.1"
 solana-ledger = { path = "../ledger", version = "=3.1.0", features = ["agave-unstable-api"] }
 solana-loader-v3-interface = "6.1.0"
 solana-local-cluster = { path = "../local-cluster", version = "=3.1.0", features = ["agave-unstable-api"] }
-solana-logger = "3.0.0"
 solana-measure = { path = "../measure", version = "=3.1.0", features = ["agave-unstable-api"] }
 solana-message = "3.0.1"
 solana-metrics = { path = "../metrics", version = "=3.1.0", features = ["agave-unstable-api"] }

+ 1 - 1
dos/Cargo.toml

@@ -20,6 +20,7 @@ dummy-for-ci-check = []
 frozen-abi = []
 
 [dependencies]
+agave-logger = { workspace = true }
 bincode = { workspace = true }
 clap = { version = "3.1.5", features = ["derive", "cargo"] }
 crossbeam-channel = { workspace = true }
@@ -35,7 +36,6 @@ solana-gossip = { workspace = true }
 solana-hash = { workspace = true }
 solana-instruction = { workspace = true }
 solana-keypair = { workspace = true }
-solana-logger = "=3.0.0"
 solana-measure = { workspace = true }
 solana-message = { workspace = true }
 solana-net-utils = { workspace = true }

+ 4 - 4
dos/src/main.rs

@@ -760,7 +760,7 @@ fn run_dos<T: 'static + TpsClient + Send + Sync>(
 }
 
 fn main() {
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
     let mut cmd_params = build_cli_parameters();
 
     if !cmd_params.skip_gossip && cmd_params.shred_version.is_none() {
@@ -943,7 +943,7 @@ pub mod test {
 
     #[test]
     fn test_dos_random() {
-        solana_logger::setup();
+        agave_logger::setup();
         let num_nodes = 1;
         let cluster =
             LocalCluster::new_with_equal_stakes(num_nodes, 100, 3, SocketAddrSpace::Unspecified);
@@ -977,7 +977,7 @@ pub mod test {
 
     #[test]
     fn test_dos_without_blockhash() {
-        solana_logger::setup();
+        agave_logger::setup();
         let num_nodes = 1;
         let cluster =
             LocalCluster::new_with_equal_stakes(num_nodes, 100, 3, SocketAddrSpace::Unspecified);
@@ -1081,7 +1081,7 @@ pub mod test {
     }
 
     fn run_dos_with_blockhash_and_payer(tpu_use_quic: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
 
         // 1. Create faucet thread
         let faucet_keypair = Keypair::new();

+ 1 - 1
entry/Cargo.toml

@@ -46,12 +46,12 @@ solana-transaction-error = { workspace = true }
 wincode = { workspace = true }
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 agave-reserved-account-keys = { workspace = true }
 assert_matches = { workspace = true }
 proptest = { workspace = true }
 solana-entry = { path = ".", features = ["agave-unstable-api", "dev-context-only-utils"] }
 solana-keypair = { workspace = true }
-solana-logger = { workspace = true }
 solana-message = { workspace = true }
 solana-perf = { workspace = true, features = ["dev-context-only-utils"] }
 solana-pubkey = { workspace = true }

+ 4 - 4
entry/src/entry.rs

@@ -1202,7 +1202,7 @@ mod tests {
 
     #[test]
     fn test_verify_slice1() {
-        solana_logger::setup();
+        agave_logger::setup();
         let thread_pool = thread_pool_for_tests();
 
         let zero = Hash::default();
@@ -1224,7 +1224,7 @@ mod tests {
 
     #[test]
     fn test_verify_slice_with_hashes1() {
-        solana_logger::setup();
+        agave_logger::setup();
         let thread_pool = thread_pool_for_tests();
 
         let zero = Hash::default();
@@ -1251,7 +1251,7 @@ mod tests {
 
     #[test]
     fn test_verify_slice_with_hashes_and_transactions() {
-        solana_logger::setup();
+        agave_logger::setup();
         let thread_pool = thread_pool_for_tests();
 
         let zero = Hash::default();
@@ -1404,7 +1404,7 @@ mod tests {
 
     #[test]
     fn test_poh_verify_fuzz() {
-        solana_logger::setup();
+        agave_logger::setup();
         for _ in 0..100 {
             let mut time = Measure::start("ticks");
             let num_ticks = thread_rng().gen_range(1..100);

+ 1 - 1
faucet/Cargo.toml

@@ -25,6 +25,7 @@ agave-unstable-api = []
 dev-context-only-utils = []
 
 [dependencies]
+agave-logger = { workspace = true }
 bincode = { workspace = true }
 clap = { workspace = true }
 crossbeam-channel = { workspace = true }
@@ -36,7 +37,6 @@ solana-cli-output = { workspace = true }
 solana-hash = "=3.0.0"
 solana-instruction = "=3.0.0"
 solana-keypair = "=3.0.1"
-solana-logger = "=3.0.0"
 solana-message = "=3.0.1"
 solana-metrics = { workspace = true }
 solana-net-utils = { workspace = true }

+ 1 - 1
faucet/src/bin/faucet.rs

@@ -19,7 +19,7 @@ use {
 async fn main() {
     let default_keypair = solana_cli_config::Config::default().keypair_path;
 
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
     solana_metrics::set_panic_hook("faucet", /*version:*/ None);
     let matches = App::new(crate_name!())
         .about(crate_description!())

+ 1 - 1
genesis/Cargo.toml

@@ -25,6 +25,7 @@ agave-unstable-api = []
 
 [dependencies]
 agave-feature-set = { workspace = true }
+agave-logger = { workspace = true }
 agave-snapshots = { workspace = true }
 base64 = { workspace = true }
 bincode = { workspace = true }
@@ -48,7 +49,6 @@ solana-inflation = "=3.0.0"
 solana-keypair = "=3.0.1"
 solana-ledger = { workspace = true }
 solana-loader-v3-interface = "6.1.0"
-solana-logger = "=3.0.0"
 solana-native-token = "=3.0.0"
 solana-poh-config = "=3.0.0"
 solana-pubkey = { version = "=3.0.0", default-features = false }

+ 1 - 1
genesis/src/main.rs

@@ -878,7 +878,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
         }
     }
 
-    solana_logger::setup();
+    agave_logger::setup();
     create_new_ledger(
         &ledger_path,
         &genesis_config,

+ 1 - 1
gossip/Cargo.toml

@@ -37,6 +37,7 @@ agave-unstable-api = []
 
 [dependencies]
 agave-feature-set = { workspace = true }
+agave-logger = { workspace = true }
 arrayvec = { workspace = true }
 assert_matches = { workspace = true }
 bincode = { workspace = true }
@@ -73,7 +74,6 @@ solana-frozen-abi-macro = { version = "=3.0.1", optional = true, features = [
 solana-hash = "=3.0.0"
 solana-keypair = "=3.0.1"
 solana-ledger = { workspace = true, features = ["agave-unstable-api"] }
-solana-logger = "=3.0.0"
 solana-measure = { workspace = true }
 solana-metrics = { workspace = true }
 solana-native-token = "=3.0.0"

+ 3 - 3
gossip/src/cluster_info.rs

@@ -2647,7 +2647,7 @@ mod tests {
 
     #[test]
     fn test_handle_pull() {
-        solana_logger::setup();
+        agave_logger::setup();
         let cluster_info = Arc::new({
             let keypair = Arc::new(Keypair::new());
             let node = Node::new_localhost_with_pubkey(&keypair.pubkey());
@@ -3690,7 +3690,7 @@ mod tests {
 
     #[test]
     fn test_push_restart_heaviest_fork() {
-        solana_logger::setup();
+        agave_logger::setup();
         let keypair = Arc::new(Keypair::new());
         let pubkey = keypair.pubkey();
         let contact_info = ContactInfo::new_localhost(&pubkey, 0);
@@ -3764,7 +3764,7 @@ mod tests {
 
     #[test]
     fn test_contact_trace() {
-        solana_logger::setup();
+        agave_logger::setup();
         let keypair43 = Arc::new(
             Keypair::try_from(
                 [

+ 2 - 2
gossip/src/duplicate_shred_handler.rs

@@ -289,7 +289,7 @@ mod tests {
 
     #[test]
     fn test_handle_mixed_entries() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
@@ -381,7 +381,7 @@ mod tests {
 
     #[test]
     fn test_reject_abuses() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());

+ 1 - 1
gossip/src/main.rs

@@ -375,7 +375,7 @@ fn get_gossip_address(matches: &ArgMatches, entrypoint_addr: Option<SocketAddr>)
 }
 
 fn main() -> Result<(), Box<dyn error::Error>> {
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
 
     let matches = parse_matches();
     let socket_addr_space = SocketAddrSpace::new(matches.is_present("allow_private_addr"));

+ 1 - 1
gossip/src/wire_format_tests.rs

@@ -40,7 +40,7 @@ mod tests {
     /// Export the "GOSSIP_WIRE_FORMAT_PACKETS" variable to run this test
     #[test]
     fn test_gossip_wire_format() {
-        solana_logger::setup();
+        agave_logger::setup();
         let path_base = match std::env::var_os("GOSSIP_WIRE_FORMAT_PACKETS") {
             Some(p) => PathBuf::from(p),
             None => {

+ 5 - 5
gossip/tests/crds_gossip.rs

@@ -712,7 +712,7 @@ fn test_star_network_push_ring_200() {
 #[ignore]
 #[serial]
 fn test_connected_staked_network() {
-    solana_logger::setup();
+    agave_logger::setup();
     let thread_pool = build_gossip_thread_pool();
     let stakes = [
         [1000; 2].to_vec(),
@@ -741,7 +741,7 @@ fn test_connected_staked_network() {
 #[test]
 #[ignore]
 fn test_star_network_large_pull() {
-    solana_logger::setup();
+    agave_logger::setup();
     let network = star_network_create(2000);
     let thread_pool = build_gossip_thread_pool();
     network_simulator_pull_only(&thread_pool, &network);
@@ -749,7 +749,7 @@ fn test_star_network_large_pull() {
 #[test]
 #[ignore]
 fn test_rstar_network_large_push() {
-    solana_logger::setup();
+    agave_logger::setup();
     let mut network = rstar_network_create(4000);
     let thread_pool = build_gossip_thread_pool();
     network_simulator(&thread_pool, &mut network, 0.9);
@@ -757,7 +757,7 @@ fn test_rstar_network_large_push() {
 #[test]
 #[ignore]
 fn test_ring_network_large_push() {
-    solana_logger::setup();
+    agave_logger::setup();
     let mut network = ring_network_create(4001);
     let thread_pool = build_gossip_thread_pool();
     network_simulator(&thread_pool, &mut network, 0.9);
@@ -765,7 +765,7 @@ fn test_ring_network_large_push() {
 #[test]
 #[ignore]
 fn test_star_network_large_push() {
-    solana_logger::setup();
+    agave_logger::setup();
     let mut network = star_network_create(4002);
     let thread_pool = build_gossip_thread_pool();
     network_simulator(&thread_pool, &mut network, 0.9);

+ 6 - 6
gossip/tests/gossip.rs

@@ -155,7 +155,7 @@ fn retransmit_to(
 /// ring a -> b -> c -> d -> e -> a
 #[test]
 fn gossip_ring() {
-    solana_logger::setup();
+    agave_logger::setup();
     run_gossip_topo(40, |listen| {
         let num = listen.len();
         for n in 0..num {
@@ -173,7 +173,7 @@ fn gossip_ring() {
 #[test]
 #[ignore]
 fn gossip_ring_large() {
-    solana_logger::setup();
+    agave_logger::setup();
     run_gossip_topo(600, |listen| {
         let num = listen.len();
         for n in 0..num {
@@ -189,7 +189,7 @@ fn gossip_ring_large() {
 /// star a -> (b,c,d,e)
 #[test]
 fn gossip_star() {
-    solana_logger::setup();
+    agave_logger::setup();
     run_gossip_topo(10, |listen| {
         let num = listen.len();
         for n in 0..(num - 1) {
@@ -208,7 +208,7 @@ fn gossip_star() {
 /// rstar a <- (b,c,d,e)
 #[test]
 fn gossip_rstar() {
-    solana_logger::setup();
+    agave_logger::setup();
     run_gossip_topo(10, |listen| {
         let num = listen.len();
         let xd = {
@@ -227,7 +227,7 @@ fn gossip_rstar() {
 
 #[test]
 pub fn cluster_info_retransmit() {
-    solana_logger::setup();
+    agave_logger::setup();
     let exit = Arc::new(AtomicBool::new(false));
     trace!("c1:");
     let (c1, dr1, tn1) = test_node(exit.clone());
@@ -295,7 +295,7 @@ pub fn cluster_info_scale() {
             genesis_utils::{create_genesis_config_with_vote_accounts, ValidatorVoteKeypairs},
         },
     };
-    solana_logger::setup();
+    agave_logger::setup();
     let exit = Arc::new(AtomicBool::new(false));
     let num_nodes: usize = std::env::var("NUM_NODES")
         .unwrap_or_else(|_| "10".to_string())

+ 1 - 1
install/Cargo.toml

@@ -16,6 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 agave-unstable-api = []
 
 [dependencies]
+agave-logger = { workspace = true }
 atty = { workspace = true }
 bincode = { workspace = true }
 bzip2 = { workspace = true }
@@ -37,7 +38,6 @@ solana-clap-utils = { workspace = true }
 solana-config-interface = { version = "=2.0.0", features = ["bincode"] }
 solana-hash = "=3.0.0"
 solana-keypair = "=3.0.1"
-solana-logger = "=3.0.0"
 solana-message = "=3.0.1"
 solana-pubkey = { version = "=3.0.0", default-features = false }
 solana-rpc-client = { workspace = true }

+ 2 - 2
install/src/lib.rs

@@ -80,7 +80,7 @@ fn handle_init(matches: &ArgMatches<'_>, config_file: &str) -> Result<(), String
 }
 
 pub fn main() -> Result<(), String> {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let matches = App::new(crate_name!())
         .about(crate_description!())
@@ -276,7 +276,7 @@ pub fn main() -> Result<(), String> {
 }
 
 pub fn main_init() -> Result<(), String> {
-    solana_logger::setup();
+    agave_logger::setup();
 
     let matches = App::new("agave-install-init")
         .about("Initializes a new installation")

+ 1 - 1
ledger-tool/Cargo.toml

@@ -21,6 +21,7 @@ frozen-abi = []
 
 [dependencies]
 agave-feature-set = { workspace = true }
+agave-logger = { workspace = true }
 agave-reserved-account-keys = { workspace = true }
 agave-snapshots = { workspace = true }
 agave-syscalls = { workspace = true }
@@ -63,7 +64,6 @@ solana-instruction = { workspace = true }
 solana-keypair = { workspace = true }
 solana-ledger = { workspace = true, features = ["dev-context-only-utils", "agave-unstable-api"] }
 solana-loader-v3-interface = { workspace = true }
-solana-logger = "=3.0.0"
 solana-measure = { workspace = true }
 solana-message = { workspace = true }
 solana-native-token = { workspace = true }

+ 1 - 1
ledger-tool/src/main.rs

@@ -859,7 +859,7 @@ fn main() {
         unsafe { signal_hook::low_level::register(signal_hook::consts::SIGUSR1, || {}) }.unwrap();
     }
 
-    solana_logger::setup_with_default_filter();
+    agave_logger::setup_with_default_filter();
 
     let load_genesis_config_arg = load_genesis_arg();
     let accounts_db_config_args = accounts_db_args();

+ 1 - 1
ledger/Cargo.toml

@@ -132,13 +132,13 @@ default-features = false
 features = ["lz4"]
 
 [dev-dependencies]
+agave-logger = { workspace = true }
 bs58 = { workspace = true }
 criterion = { workspace = true }
 proptest = { workspace = true }
 solana-account-decoder = { workspace = true }
 # See order-crates-for-publishing.py for using this unusual `path = "."`
 solana-ledger = { path = ".", features = ["dev-context-only-utils", "agave-unstable-api"] }
-solana-logger = { workspace = true }
 solana-net-utils = { workspace = true, features = ["dev-context-only-utils"] }
 solana-perf = { workspace = true, features = ["dev-context-only-utils"] }
 solana-program-option = { workspace = true }

+ 10 - 10
ledger/src/blockstore.rs

@@ -5281,7 +5281,7 @@ pub mod tests {
 
     #[test]
     fn test_create_new_ledger() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mint_total = 1_000_000_000_000;
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(mint_total);
         let (ledger_path, _blockhash) = create_new_tmp_ledger_auto_delete!(&genesis_config);
@@ -5341,7 +5341,7 @@ pub mod tests {
 
     #[test]
     fn test_write_entries() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -6098,7 +6098,7 @@ pub mod tests {
 
     #[test]
     fn test_handle_chaining_missing_slots() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -6163,7 +6163,7 @@ pub mod tests {
     #[test]
     #[allow(clippy::cognitive_complexity)]
     pub fn test_forward_chaining_is_connected() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -6250,7 +6250,7 @@ pub mod tests {
                 .collect::<Vec<_>>()
         }
 
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -6334,7 +6334,7 @@ pub mod tests {
 
     #[test]
     fn test_set_and_chain_connected_on_root_and_next_slots() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -6959,7 +6959,7 @@ pub mod tests {
 
     #[test]
     fn test_should_insert_data_shred() {
-        solana_logger::setup();
+        agave_logger::setup();
         let entries = create_ticks(2000, 1, Hash::new_unique());
         let shredder = Shredder::new(0, 0, 1, 0).unwrap();
         let keypair = Keypair::new();
@@ -7606,7 +7606,7 @@ pub mod tests {
 
     #[test]
     fn test_insert_multiple_is_last() {
-        solana_logger::setup();
+        agave_logger::setup();
         let (shreds, _) = make_slot_entries(0, 0, 18);
         let num_shreds = shreds.len() as u64;
         let ledger_path = get_tmp_ledger_path_auto_delete!();
@@ -8656,7 +8656,7 @@ pub mod tests {
     }
 
     fn do_test_lowest_cleanup_slot_and_special_cfs(simulate_blockstore_cleanup_service: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
@@ -10519,7 +10519,7 @@ pub mod tests {
     /// by producing valid shreds with overlapping fec_set_index ranges
     /// so that we fail the config check and mark the slot duplicate
     fn erasure_multiple_config() {
-        solana_logger::setup();
+        agave_logger::setup();
         let slot = 1;
         let num_txs = 20;
         // primary slot content

+ 3 - 3
ledger/src/blockstore_cleanup_service.rs

@@ -280,7 +280,7 @@ mod tests {
     fn test_find_slots_to_clean() {
         // BlockstoreCleanupService::find_slots_to_clean() does not modify the
         // Blockstore, so we can make repeated calls on the same slots
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
 
@@ -353,7 +353,7 @@ mod tests {
 
     #[test]
     fn test_cleanup() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Blockstore::open(ledger_path.path()).unwrap();
         let (shreds, _) = make_many_slot_entries(0, 50, 5);
@@ -377,7 +377,7 @@ mod tests {
 
     #[test]
     fn test_cleanup_speed() {
-        solana_logger::setup();
+        agave_logger::setup();
         let ledger_path = get_tmp_ledger_path_auto_delete!();
         let blockstore = Arc::new(Blockstore::open(ledger_path.path()).unwrap());
 

+ 2 - 2
ledger/src/blockstore_db.rs

@@ -1335,7 +1335,7 @@ pub mod tests {
 
     #[test]
     fn test_open_unknown_columns() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let temp_dir = tempdir().unwrap();
         let db_path = temp_dir.path();
@@ -1375,7 +1375,7 @@ pub mod tests {
 
     #[test]
     fn test_remove_deprecated_progam_costs_column_compat() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         fn is_program_costs_column_present(path: &Path) -> bool {
             DB::list_cf(&Options::default(), path)

+ 19 - 19
ledger/src/blockstore_processor.rs

@@ -2455,7 +2455,7 @@ pub mod tests {
 
     // Intentionally make slot 1 faulty and ensure that processing sees it as dead
     fn do_test_process_blockstore_with_missing_hashes(blockstore_access_type: AccessType) {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let hashes_per_tick = 2;
         let GenesisConfigInfo {
@@ -2511,7 +2511,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_invalid_slot_tick_count() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2573,7 +2573,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_slot_with_trailing_entry() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo {
             mint_keypair,
@@ -2623,7 +2623,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_incomplete_slot() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2708,7 +2708,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_two_forks_and_squash() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2787,7 +2787,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_two_forks() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2877,7 +2877,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_dead_slot() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2924,7 +2924,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_with_dead_child() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -2984,7 +2984,7 @@ pub mod tests {
 
     #[test]
     fn test_root_with_all_dead_children() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -3017,7 +3017,7 @@ pub mod tests {
 
     #[test]
     fn test_process_blockstore_epoch_boundary_root() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(10_000);
         let ticks_per_slot = genesis_config.ticks_per_slot;
@@ -3108,7 +3108,7 @@ pub mod tests {
 
     #[test]
     fn test_process_empty_entry_is_registered() {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo {
             genesis_config,
@@ -3138,7 +3138,7 @@ pub mod tests {
 
     #[test]
     fn test_process_ledger_simple() {
-        solana_logger::setup();
+        agave_logger::setup();
         let leader_pubkey = solana_pubkey::new_rand();
         let mint = 100;
         let hashes_per_tick = 10;
@@ -3465,7 +3465,7 @@ pub mod tests {
 
     #[test]
     fn test_transaction_result_does_not_affect_bankhash() {
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -3640,7 +3640,7 @@ pub mod tests {
     fn test_process_entries_2nd_entry_collision_with_self_and_error(
         relax_intrabatch_account_locks: bool,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo {
             genesis_config,
@@ -3750,7 +3750,7 @@ pub mod tests {
     #[test_case(false; "old")]
     #[test_case(true; "simd83")]
     fn test_process_entry_duplicate_transaction(relax_intrabatch_account_locks: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
 
         let GenesisConfigInfo {
             genesis_config,
@@ -4322,7 +4322,7 @@ pub mod tests {
     fn test_process_entries_stress() {
         // this test throws lots of rayon threads at process_entries()
         //  finds bugs in very low-layer stuff
-        solana_logger::setup();
+        agave_logger::setup();
         let GenesisConfigInfo {
             genesis_config,
             mint_keypair,
@@ -4645,7 +4645,7 @@ pub mod tests {
         blockstore_root: Option<Slot>,
         blockstore_access_type: AccessType,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         /*
             Build fork structure:
                  slot 0
@@ -5056,7 +5056,7 @@ pub mod tests {
     }
 
     fn do_test_schedule_batches_for_execution(should_succeed: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
         let dummy_leader_pubkey = solana_pubkey::new_rand();
         let GenesisConfigInfo {
             genesis_config,
@@ -5162,7 +5162,7 @@ pub mod tests {
         tx_result: TxResult,
         poh_result: Result<Option<usize>>,
     ) {
-        solana_logger::setup();
+        agave_logger::setup();
         let dummy_leader_pubkey = solana_pubkey::new_rand();
         let GenesisConfigInfo {
             genesis_config,

+ 3 - 3
ledger/src/shred.rs

@@ -1111,7 +1111,7 @@ mod tests {
     #[test_case(true ; "last_in_slot")]
     #[test_case(false ; "not_last_in_slot")]
     fn test_should_discard_shred(is_last_in_slot: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut rng = rand::thread_rng();
         let slot = 18_291;
         let shreds = make_merkle_shreds_for_tests(
@@ -1375,7 +1375,7 @@ mod tests {
     #[test_case(true; "enforce_fixed_fec_set")]
     #[test_case(false ; "do_not_enforce_fixed_fec_set")]
     fn test_should_discard_shred_fec_set_checks(enforce_fixed_fec_set: bool) {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut rng = rand::thread_rng();
         let slot = 18_291;
         let shreds = make_merkle_shreds_for_tests(
@@ -1969,7 +1969,7 @@ mod tests {
 
     #[test]
     fn test_data_complete_shred_index_validation() {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut rng = rand::thread_rng();
         let slot = 18_291;
         let shreds = make_merkle_shreds_for_tests(

+ 3 - 3
ledger/src/sigverify_shreds.rs

@@ -546,7 +546,7 @@ mod tests {
     };
 
     fn run_test_sigverify_shred_cpu(slot: Slot) {
-        solana_logger::setup();
+        agave_logger::setup();
         let mut packet = Packet::default();
         let cache = RwLock::new(LruCache::new(/*capacity:*/ 128));
         let shredder = Shredder::new(slot, slot.saturating_sub(1), 0, 0).unwrap();
@@ -585,7 +585,7 @@ mod tests {
     }
 
     fn run_test_sigverify_shreds_cpu(thread_pool: &ThreadPool, slot: Slot) {
-        solana_logger::setup();
+        agave_logger::setup();
         let cache = RwLock::new(LruCache::new(/*capacity:*/ 128));
         let keypair = Keypair::new();
         let batch = make_packet_batch(&keypair, slot);
@@ -619,7 +619,7 @@ mod tests {
     }
 
     fn run_test_sigverify_shreds_gpu(thread_pool: &ThreadPool, slot: Slot) {
-        solana_logger::setup();
+        agave_logger::setup();
         let recycler_cache = RecyclerCache::default();
         let cache = RwLock::new(LruCache::new(/*capacity:*/ 128));
 

+ 1 - 1
ledger/src/wire_format_tests.rs

@@ -65,7 +65,7 @@ mod tests {
     /// Export the "TURBINE_WIRE_FORMAT_PACKETS" env variable to run this test.
     #[test]
     fn test_turbine_wire_format() {
-        solana_logger::setup();
+        agave_logger::setup();
         let path_base = match std::env::var_os("TURBINE_WIRE_FORMAT_PACKETS") {
             Some(p) => PathBuf::from(p),
             None => {

+ 1 - 1
local-cluster/Cargo.toml

@@ -17,6 +17,7 @@ agave-unstable-api = []
 dev-context-only-utils = ["solana-core/dev-context-only-utils"]
 
 [dependencies]
+agave-logger = { workspace = true }
 agave-snapshots = { workspace = true }
 crossbeam-channel = { workspace = true }
 itertools = { workspace = true }
@@ -39,7 +40,6 @@ solana-hard-forks = { workspace = true }
 solana-hash = { workspace = true }
 solana-keypair = { workspace = true }
 solana-ledger = { workspace = true }
-solana-logger = { workspace = true }
 solana-message = { workspace = true }
 solana-native-token = { workspace = true }
 solana-net-utils = { workspace = true }

+ 1 - 1
local-cluster/src/integration_tests.rs

@@ -305,7 +305,7 @@ pub fn run_cluster_partition<C>(
     ticks_per_slot: Option<u64>,
     additional_accounts: Vec<(Pubkey, AccountSharedData)>,
 ) {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     info!("PARTITION_TEST!");
     let num_nodes = partitions.len();
     let node_stakes: Vec<_> = partitions

+ 40 - 40
local-cluster/tests/local_cluster.rs

@@ -108,7 +108,7 @@ use {
 #[test]
 #[serial]
 fn test_local_cluster_start_and_exit() {
-    solana_logger::setup();
+    agave_logger::setup();
     let num_nodes = 1;
     let cluster = LocalCluster::new_with_equal_stakes(
         num_nodes,
@@ -122,7 +122,7 @@ fn test_local_cluster_start_and_exit() {
 #[test]
 #[serial]
 fn test_local_cluster_start_and_exit_with_config() {
-    solana_logger::setup();
+    agave_logger::setup();
     const NUM_NODES: usize = 1;
     let mut config = ClusterConfig {
         validator_configs: make_identical_validator_configs(
@@ -142,7 +142,7 @@ fn test_local_cluster_start_and_exit_with_config() {
 #[test]
 #[serial]
 fn test_spend_and_verify_all_nodes_1() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_spend_and_verify_all_nodes_1");
     let num_nodes = 1;
     let local = LocalCluster::new_with_equal_stakes(
@@ -164,7 +164,7 @@ fn test_spend_and_verify_all_nodes_1() {
 #[test]
 #[serial]
 fn test_spend_and_verify_all_nodes_2() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_spend_and_verify_all_nodes_2");
     let num_nodes = 2;
     let local = LocalCluster::new_with_equal_stakes(
@@ -186,7 +186,7 @@ fn test_spend_and_verify_all_nodes_2() {
 #[test]
 #[serial]
 fn test_spend_and_verify_all_nodes_3() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_spend_and_verify_all_nodes_3");
     let num_nodes = 3;
     let local = LocalCluster::new_with_equal_stakes(
@@ -208,7 +208,7 @@ fn test_spend_and_verify_all_nodes_3() {
 #[test]
 #[serial]
 fn test_local_cluster_signature_subscribe() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let num_nodes = 2;
     let cluster = LocalCluster::new_with_equal_stakes(
         num_nodes,
@@ -291,7 +291,7 @@ fn test_local_cluster_signature_subscribe() {
 #[test]
 #[serial]
 fn test_two_unbalanced_stakes() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_two_unbalanced_stakes");
     let validator_config = ValidatorConfig::default_for_test();
     let num_ticks_per_second = 100;
@@ -327,7 +327,7 @@ fn test_two_unbalanced_stakes() {
 #[test]
 #[serial]
 fn test_forwarding() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // Set up a cluster where one node is never the leader, so all txs sent to this node
     // will be have to be forwarded in order to be confirmed
     let mut config = ClusterConfig {
@@ -370,7 +370,7 @@ fn test_forwarding() {
 #[test]
 #[serial]
 fn test_restart_node() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_restart_node");
     let slots_per_epoch = MINIMUM_SLOTS_PER_EPOCH * 2;
     let ticks_per_slot = 16;
@@ -413,7 +413,7 @@ fn test_restart_node() {
 #[test]
 #[serial]
 fn test_mainnet_beta_cluster_type() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     let mut config = ClusterConfig {
         cluster_type: ClusterType::MainnetBeta,
@@ -481,7 +481,7 @@ fn test_mainnet_beta_cluster_type() {
 #[test]
 #[serial]
 fn test_snapshot_download() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 1 node
     let snapshot_interval_slots = NonZeroU64::new(50).unwrap();
     let num_account_paths = 3;
@@ -556,7 +556,7 @@ fn test_snapshot_download() {
 #[test]
 #[serial]
 fn test_incremental_snapshot_download() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 1 node
     let incremental_snapshot_interval = 9;
     let full_snapshot_interval = incremental_snapshot_interval * 3;
@@ -729,7 +729,7 @@ fn test_incremental_snapshot_download() {
 #[test]
 #[serial]
 fn test_incremental_snapshot_download_with_crossing_full_snapshot_interval_at_startup() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // If these intervals change, also make sure to change the loop timers accordingly.
     let incremental_snapshot_interval = 9;
     let full_snapshot_interval = incremental_snapshot_interval * 5;
@@ -1237,7 +1237,7 @@ fn test_incremental_snapshot_download_with_crossing_full_snapshot_interval_at_st
 #[test]
 #[serial]
 fn test_snapshot_restart_tower() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 2 nodes
     let snapshot_interval_slots = NonZeroU64::new(10).unwrap();
     let num_account_paths = 2;
@@ -1310,7 +1310,7 @@ fn test_snapshot_restart_tower() {
 #[test]
 #[serial]
 fn test_snapshots_blockstore_floor() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 1 snapshotting leader
     let snapshot_interval_slots = NonZeroU64::new(100).unwrap();
     let num_account_paths = 4;
@@ -1423,7 +1423,7 @@ fn test_snapshots_blockstore_floor() {
 #[test]
 #[serial]
 fn test_snapshots_restart_validity() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let snapshot_interval_slots = NonZeroU64::new(100).unwrap();
     let num_account_paths = 1;
     let mut snapshot_test_config =
@@ -1512,7 +1512,7 @@ fn test_snapshots_restart_validity() {
 #[allow(unused_attributes)]
 #[ignore]
 fn test_fail_entry_verification_leader() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let leader_stake = (DUPLICATE_THRESHOLD * 100.0) as u64 + 1;
     let validator_stake1 = (100 - leader_stake) / 2;
     let validator_stake2 = 100 - leader_stake - validator_stake1;
@@ -1534,7 +1534,7 @@ fn test_fail_entry_verification_leader() {
 #[ignore]
 #[allow(unused_attributes)]
 fn test_fake_shreds_broadcast_leader() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let node_stakes = vec![300, 100];
     let (cluster, _) = test_faulty_node(
         BroadcastStageType::BroadcastFakeShreds,
@@ -1552,7 +1552,7 @@ fn test_fake_shreds_broadcast_leader() {
 #[test]
 #[serial]
 fn test_wait_for_max_stake() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let validator_config = ValidatorConfig::default_for_test();
     let slots_per_epoch = MINIMUM_SLOTS_PER_EPOCH;
     // Set this large enough to allow for skipped slots but still be able to
@@ -1610,7 +1610,7 @@ fn test_wait_for_max_stake() {
 // Test that when a leader is leader for banks B_i..B_{i+n}, and B_i is not
 // votable, then B_{i+1} still chains to B_i
 fn test_no_voting() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let validator_config = ValidatorConfig {
         voting_disabled: true,
         ..ValidatorConfig::default_for_test()
@@ -1650,7 +1650,7 @@ fn test_no_voting() {
 #[test]
 #[serial]
 fn test_optimistic_confirmation_violation_detection() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 2 nodes
     let slots_per_epoch = 2048;
     let node_stakes = vec![50 * DEFAULT_NODE_STAKE, 51 * DEFAULT_NODE_STAKE];
@@ -1887,7 +1887,7 @@ fn test_optimistic_confirmation_violation_detection() {
 #[test]
 #[serial]
 fn test_validator_saves_tower() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     let validator_config = ValidatorConfig {
         require_tower: true,
@@ -2037,7 +2037,7 @@ enum ClusterMode {
 }
 
 fn do_test_future_tower(cluster_mode: ClusterMode) {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     // First set up the cluster with 4 nodes
     let slots_per_epoch = 2048;
@@ -2205,7 +2205,7 @@ fn restart_whole_cluster_after_hard_fork(
 #[test]
 #[serial]
 fn test_hard_fork_invalidates_tower() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     // First set up the cluster with 2 nodes
     let slots_per_epoch = 2048;
@@ -2378,7 +2378,7 @@ fn create_snapshot_to_hard_fork(
 #[ignore]
 #[serial]
 fn test_hard_fork_with_gap_in_roots() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     // First set up the cluster with 2 nodes
     let slots_per_epoch = 2048;
@@ -2545,7 +2545,7 @@ fn test_restart_tower_rollback() {
     // Test node crashing and failing to save its tower before restart
     // Cluster continues to make progress, this node is able to rejoin with
     // outdated tower post restart.
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     // First set up the cluster with 2 nodes
     let slots_per_epoch = 2048;
@@ -2778,7 +2778,7 @@ fn test_rpc_block_subscribe() {
 #[serial]
 #[allow(unused_attributes)]
 fn test_oc_bad_signatures() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
 
     let total_stake = 100 * DEFAULT_NODE_STAKE;
     let leader_stake = (total_stake as f64 * VOTE_THRESHOLD_SIZE) as u64;
@@ -3150,7 +3150,7 @@ fn setup_transfer_scan_threads(
 }
 
 fn run_test_load_program_accounts(scan_commitment: CommitmentConfig) {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // First set up the cluster with 2 nodes
     let slots_per_epoch = 2048;
     let node_stakes = vec![51 * DEFAULT_NODE_STAKE, 50 * DEFAULT_NODE_STAKE];
@@ -3265,7 +3265,7 @@ fn test_lockout_violation_without_tower() {
 //    `A` should not be able to generate a switching proof.
 //
 fn do_test_lockout_violation_with_or_without_tower(with_tower: bool) {
-    solana_logger::setup_with("info");
+    agave_logger::setup_with("info");
 
     // First set up the cluster with 4 nodes
     let slots_per_epoch = 2048;
@@ -3545,7 +3545,7 @@ fn do_test_lockout_violation_with_or_without_tower(with_tower: bool) {
 // stalling the network.
 
 fn test_fork_choice_refresh_old_votes() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let max_switch_threshold_failure_pct = 1.0 - 2.0 * SWITCH_FORK_THRESHOLD;
     let total_stake = 100 * DEFAULT_NODE_STAKE;
     let max_failures_stake = (max_switch_threshold_failure_pct * total_stake as f64) as u64;
@@ -3942,7 +3942,7 @@ fn test_duplicate_shreds_broadcast_leader_ancestor_hashes() {
 }
 
 fn run_duplicate_shreds_broadcast_leader(vote_on_duplicate: bool) {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     // Create 4 nodes:
     // 1) Bad leader sending different versions of shreds to both of the other nodes
     // 2) 1 node who's voting behavior in gossip
@@ -4120,7 +4120,7 @@ fn run_duplicate_shreds_broadcast_leader(vote_on_duplicate: bool) {
 #[serial]
 #[ignore]
 fn test_switch_threshold_uses_gossip_votes() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let total_stake = 100 * DEFAULT_NODE_STAKE;
 
     // Minimum stake needed to generate a switching proof
@@ -4449,7 +4449,7 @@ fn test_cluster_partition_1_1_1() {
 #[test]
 #[serial]
 fn test_leader_failure_4() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     error!("test_leader_failure_4");
     // Cluster needs a supermajority to remain even after taking 1 node offline,
     // so the minimum number of nodes for this test is 4.
@@ -4524,7 +4524,7 @@ fn test_leader_failure_4() {
 #[test]
 #[serial]
 fn test_slot_hash_expiry() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     solana_slot_hashes::set_entries_for_tests_only(64);
 
     let slots_per_epoch = 2048;
@@ -4740,7 +4740,7 @@ fn test_slot_hash_expiry() {
 #[serial]
 #[ignore]
 fn test_duplicate_with_pruned_ancestor() {
-    solana_logger::setup_with("info,solana_metrics=off");
+    agave_logger::setup_with("info,solana_metrics=off");
     solana_core::repair::duplicate_repair_status::set_ancestor_hash_repair_sample_size_for_tests_only(3);
 
     let majority_leader_stake = 10_000_000 * DEFAULT_NODE_STAKE;
@@ -4984,7 +4984,7 @@ fn test_duplicate_with_pruned_ancestor() {
 #[test]
 #[serial]
 fn test_boot_from_local_state() {
-    solana_logger::setup_with_default("error,local_cluster=info");
+    agave_logger::setup_with_default("error,local_cluster=info");
     const FULL_SNAPSHOT_INTERVAL: SnapshotInterval =
         SnapshotInterval::Slots(NonZeroU64::new(100).unwrap());
     const INCREMENTAL_SNAPSHOT_INTERVAL: SnapshotInterval =
@@ -5279,7 +5279,7 @@ fn test_boot_from_local_state() {
 #[test]
 #[serial]
 fn test_boot_from_local_state_missing_archive() {
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     const FULL_SNAPSHOT_INTERVAL: SnapshotInterval =
         SnapshotInterval::Slots(NonZeroU64::new(20).unwrap());
     const INCREMENTAL_SNAPSHOT_INTERVAL: SnapshotInterval =
@@ -5454,7 +5454,7 @@ fn test_duplicate_shreds_switch_failure() {
         }
     }
 
-    solana_logger::setup_with_default(RUST_LOG_FILTER);
+    agave_logger::setup_with_default(RUST_LOG_FILTER);
     let validator_keypairs = [
         "28bN3xyvrP4E8LwEgtLjhnkb7cY4amQb6DrYAbAYjgRV4GAGgkVM2K7wnxnAS7WDneuavza7x21MiafLu1HkwQt4",
         "2saHBBoTkLMmttmPQP8KfBkcCw45S5cwtV3wTdGCscRC8uxdgvHxpHiWXKx4LvJjNJtnNcbSv5NdheokFFqnNDt8",
@@ -5784,7 +5784,7 @@ fn test_duplicate_shreds_switch_failure() {
 #[serial]
 fn test_randomly_mixed_block_verification_methods_between_bootstrap_and_not() {
     // tailored logging just to see two block verification methods are working correctly
-    solana_logger::setup_with_default(
+    agave_logger::setup_with_default(
         "solana_metrics::metrics=warn,solana_core=warn,\
          solana_runtime::installed_scheduler_pool=trace,solana_ledger::blockstore_processor=debug,\
          info",
@@ -5817,7 +5817,7 @@ fn test_randomly_mixed_block_verification_methods_between_bootstrap_and_not() {
 #[ignore]
 #[serial]
 fn test_invalid_forks_persisted_on_restart() {
-    solana_logger::setup_with("info,solana_metrics=off,solana_ledger=off");
+    agave_logger::setup_with("info,solana_metrics=off,solana_ledger=off");
 
     let dup_slot = 10;
     let validator_keypairs = [

+ 27 - 0
logger/Cargo.toml

@@ -0,0 +1,27 @@
+[package]
+name = "agave-logger"
+description = "Agave Logger"
+documentation = "https://docs.rs/agave-logger"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]
+
+[lib]
+name = "agave_logger"
+
+[features]
+agave-unstable-api = []
+
+[dependencies]
+env_logger = { workspace = true }
+log = { workspace = true }
+
+[target."cfg(unix)".dependencies]
+libc = { workspace = true }
+signal-hook = { workspace = true }

+ 138 - 0
logger/src/lib.rs

@@ -0,0 +1,138 @@
+//! The `logger` module configures `env_logger`
+#![cfg(feature = "agave-unstable-api")]
+use std::{
+    env,
+    sync::{Arc, LazyLock, RwLock},
+    thread::JoinHandle,
+};
+
+static LOGGER: LazyLock<Arc<RwLock<env_logger::Logger>>> =
+    LazyLock::new(|| Arc::new(RwLock::new(env_logger::Logger::from_default_env())));
+
+pub const DEFAULT_FILTER: &str = "solana=info,agave=info";
+
+struct LoggerShim {}
+
+impl log::Log for LoggerShim {
+    fn enabled(&self, metadata: &log::Metadata) -> bool {
+        LOGGER.read().unwrap().enabled(metadata)
+    }
+
+    fn log(&self, record: &log::Record) {
+        LOGGER.read().unwrap().log(record);
+    }
+
+    fn flush(&self) {}
+}
+
+fn replace_logger(logger: env_logger::Logger) {
+    log::set_max_level(logger.filter());
+    *LOGGER.write().unwrap() = logger;
+    let _ = log::set_boxed_logger(Box::new(LoggerShim {}));
+}
+
+// Configures logging with a specific filter overriding RUST_LOG.  _RUST_LOG is used instead
+// so if set it takes precedence.
+// May be called at any time to re-configure the log filter
+pub fn setup_with(filter: &str) {
+    let logger =
+        env_logger::Builder::from_env(env_logger::Env::new().filter_or("_RUST_LOG", filter))
+            .format_timestamp_nanos()
+            .build();
+    replace_logger(logger);
+}
+
+// Configures logging with a default filter if RUST_LOG is not set
+pub fn setup_with_default(filter: &str) {
+    let logger = env_logger::Builder::from_env(env_logger::Env::new().default_filter_or(filter))
+        .format_timestamp_nanos()
+        .build();
+    replace_logger(logger);
+}
+
+// Configures logging with the `DEFAULT_FILTER` if RUST_LOG is not set
+pub fn setup_with_default_filter() {
+    setup_with_default(DEFAULT_FILTER);
+}
+
+// Configures logging with the default filter "error" if RUST_LOG is not set
+pub fn setup() {
+    setup_with_default("error");
+}
+
+// Configures file logging with a default filter if RUST_LOG is not set
+pub fn setup_file_with_default(logfile: &str, filter: &str) {
+    use std::fs::OpenOptions;
+    let file = OpenOptions::new()
+        .create(true)
+        .append(true)
+        .open(logfile)
+        .unwrap();
+    let logger = env_logger::Builder::from_env(env_logger::Env::new().default_filter_or(filter))
+        .format_timestamp_nanos()
+        .target(env_logger::Target::Pipe(Box::new(file)))
+        .build();
+    replace_logger(logger);
+}
+
+#[cfg(unix)]
+fn redirect_stderr(filename: &str) {
+    use std::{fs::OpenOptions, os::unix::io::AsRawFd};
+    match OpenOptions::new().create(true).append(true).open(filename) {
+        Ok(file) => unsafe {
+            libc::dup2(file.as_raw_fd(), libc::STDERR_FILENO);
+        },
+        Err(err) => eprintln!("Unable to open {filename}: {err}"),
+    }
+}
+
+// Redirect stderr to a file with support for logrotate by sending a SIGUSR1 to the process.
+//
+// Upon success, future `log` macros and `eprintln!()` can be found in the specified log file.
+pub fn redirect_stderr_to_file(logfile: Option<String>) -> Option<JoinHandle<()>> {
+    // Default to RUST_BACKTRACE=1 for more informative validator logs
+    if env::var_os("RUST_BACKTRACE").is_none() {
+        env::set_var("RUST_BACKTRACE", "1")
+    }
+
+    match logfile {
+        None => {
+            setup_with_default_filter();
+            None
+        }
+        Some(logfile) => {
+            #[cfg(unix)]
+            {
+                use log::info;
+                let mut signals =
+                    signal_hook::iterator::Signals::new([signal_hook::consts::SIGUSR1])
+                        .unwrap_or_else(|err| {
+                            eprintln!("Unable to register SIGUSR1 handler: {err:?}");
+                            std::process::exit(1);
+                        });
+
+                setup_with_default_filter();
+                redirect_stderr(&logfile);
+                Some(
+                    std::thread::Builder::new()
+                        .name("solSigUsr1".into())
+                        .spawn(move || {
+                            for signal in signals.forever() {
+                                info!(
+                                    "received SIGUSR1 ({signal}), reopening log file: {logfile:?}",
+                                );
+                                redirect_stderr(&logfile);
+                            }
+                        })
+                        .unwrap(),
+                )
+            }
+            #[cfg(not(unix))]
+            {
+                println!("logrotate is not supported on this platform");
+                setup_file_with_default(&logfile, DEFAULT_FILTER);
+                None
+            }
+        }
+    }
+}

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels