浏览代码

Extract log collector crate (#2025)

* extract log-collector crate

* update log-collector dependents

* cargo sort

* fmt
Kevin Heavey 1 年之前
父节点
当前提交
ddee03e60d

+ 1 - 0
.gitignore

@@ -17,6 +17,7 @@ target/
 *.log
 log-*.txt
 log-*/
+!log-collector/
 !log-analyzer/*
 
 # intellij files

+ 19 - 0
Cargo.lock

@@ -186,6 +186,7 @@ dependencies = [
  "solana-geyser-plugin-manager",
  "solana-gossip",
  "solana-ledger",
+ "solana-log-collector",
  "solana-logger",
  "solana-measure",
  "solana-program-runtime",
@@ -5549,6 +5550,7 @@ dependencies = [
  "num-derive",
  "num-traits",
  "rustc_version 0.4.0",
+ "solana-log-collector",
  "solana-program",
  "solana-program-runtime",
  "solana-sdk",
@@ -5731,6 +5733,7 @@ dependencies = [
  "scopeguard",
  "solana-compute-budget",
  "solana-curve25519",
+ "solana-log-collector",
  "solana-measure",
  "solana-poseidon",
  "solana-program-runtime",
@@ -6040,6 +6043,7 @@ dependencies = [
  "chrono",
  "serde",
  "serde_derive",
+ "solana-log-collector",
  "solana-logger",
  "solana-program-runtime",
  "solana-sdk",
@@ -6548,6 +6552,7 @@ dependencies = [
  "bincode",
  "log",
  "solana-compute-budget",
+ "solana-log-collector",
  "solana-measure",
  "solana-program-runtime",
  "solana-sdk",
@@ -6608,6 +6613,13 @@ dependencies = [
  "solana-version",
 ]
 
+[[package]]
+name = "solana-log-collector"
+version = "2.1.0"
+dependencies = [
+ "log",
+]
+
 [[package]]
 name = "solana-logger"
 version = "2.1.0"
@@ -6884,6 +6896,7 @@ dependencies = [
  "solana-compute-budget",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
+ "solana-log-collector",
  "solana-logger",
  "solana-measure",
  "solana-metrics",
@@ -6914,6 +6927,7 @@ dependencies = [
  "solana-bpf-loader-program",
  "solana-compute-budget",
  "solana-inline-spl",
+ "solana-log-collector",
  "solana-logger",
  "solana-program-runtime",
  "solana-runtime",
@@ -7388,6 +7402,7 @@ dependencies = [
  "rustc_version 0.4.0",
  "solana-compute-budget",
  "solana-config-program",
+ "solana-log-collector",
  "solana-logger",
  "solana-program-runtime",
  "solana-sdk",
@@ -7514,6 +7529,7 @@ dependencies = [
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
  "solana-loader-v4-program",
+ "solana-log-collector",
  "solana-logger",
  "solana-measure",
  "solana-metrics",
@@ -7545,6 +7561,7 @@ dependencies = [
  "serde",
  "serde_derive",
  "solana-compute-budget",
+ "solana-log-collector",
  "solana-logger",
  "solana-program-runtime",
  "solana-sdk",
@@ -7928,6 +7945,7 @@ dependencies = [
  "bytemuck",
  "num-derive",
  "num-traits",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-zk-sdk",
@@ -7989,6 +8007,7 @@ dependencies = [
  "curve25519-dalek",
  "num-derive",
  "num-traits",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-zk-token-sdk",

+ 2 - 0
Cargo.toml

@@ -51,6 +51,7 @@ members = [
     "ledger-tool",
     "local-cluster",
     "log-analyzer",
+    "log-collector",
     "logger",
     "measure",
     "memory-management",
@@ -365,6 +366,7 @@ solana-inline-spl = { path = "inline-spl", version = "=2.1.0" }
 solana-ledger = { path = "ledger", version = "=2.1.0" }
 solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.0" }
 solana-local-cluster = { path = "local-cluster", version = "=2.1.0" }
+solana-log-collector = { path = "log-collector", version = "=2.1.0" }
 solana-logger = { path = "logger", version = "=2.1.0" }
 solana-measure = { path = "measure", version = "=2.1.0" }
 solana-merkle-tree = { path = "merkle-tree", version = "=2.1.0" }

+ 1 - 0
ledger-tool/Cargo.toml

@@ -38,6 +38,7 @@ solana-entry = { workspace = true }
 solana-geyser-plugin-manager = { workspace = true }
 solana-gossip = { workspace = true }
 solana-ledger = { workspace = true, features = ["dev-context-only-utils"] }
+solana-log-collector = { workspace = true }
 solana-logger = { workspace = true }
 solana-measure = { workspace = true }
 solana-program-runtime = { workspace = true }

+ 16 - 0
log-collector/Cargo.toml

@@ -0,0 +1,16 @@
+[package]
+name = "solana-log-collector"
+description = "Solana log collector"
+documentation = "https://docs.rs/solana-log-collector"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
+
+[dependencies]
+log = { workspace = true }
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]

+ 2 - 2
program-runtime/src/log_collector.rs → log-collector/src/lib.rs

@@ -64,7 +64,7 @@ impl LogCollector {
 #[macro_export]
 macro_rules! ic_logger_msg {
     ($log_collector:expr, $message:expr) => {
-        $crate::log_collector::log::debug!(
+        $crate::log::debug!(
             target: "solana_runtime::message_processor::stable_log",
             "{}",
             $message
@@ -76,7 +76,7 @@ macro_rules! ic_logger_msg {
         }
     };
     ($log_collector:expr, $fmt:expr, $($arg:tt)*) => {
-        $crate::log_collector::log::debug!(
+        $crate::log::debug!(
             target: "solana_runtime::message_processor::stable_log",
             $fmt,
             $($arg)*

+ 1 - 0
program-runtime/Cargo.toml

@@ -25,6 +25,7 @@ serde = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-frozen-abi = { workspace = true, optional = true }
 solana-frozen-abi-macro = { workspace = true, optional = true }
+solana-log-collector = { workspace = true }
 solana-measure = { workspace = true }
 solana-metrics = { workspace = true }
 solana-sdk = { workspace = true }

+ 2 - 3
program-runtime/src/invoke_context.rs

@@ -1,16 +1,15 @@
 use {
     crate::{
-        ic_msg,
         loaded_programs::{
             ProgramCacheEntry, ProgramCacheEntryType, ProgramCacheForTxBatch,
             ProgramRuntimeEnvironments,
         },
-        log_collector::LogCollector,
         stable_log,
         sysvar_cache::SysvarCache,
         timings::{ExecuteDetailsTimings, ExecuteTimings},
     },
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_log_collector::{ic_msg, LogCollector},
     solana_measure::measure::Measure,
     solana_rbpf::{
         ebpf::MM_HEAP_START,
@@ -677,6 +676,7 @@ macro_rules! with_mock_invoke_context {
     ) => {
         use {
             solana_compute_budget::compute_budget::ComputeBudget,
+            solana_log_collector::LogCollector,
             solana_sdk::{
                 account::ReadableAccount, feature_set::FeatureSet, hash::Hash, sysvar::rent::Rent,
                 transaction_context::TransactionContext,
@@ -685,7 +685,6 @@ macro_rules! with_mock_invoke_context {
             $crate::{
                 invoke_context::{EnvironmentConfig, InvokeContext},
                 loaded_programs::ProgramCacheForTxBatch,
-                log_collector::LogCollector,
                 sysvar_cache::SysvarCache,
             },
         };

+ 0 - 1
program-runtime/src/lib.rs

@@ -11,7 +11,6 @@ extern crate solana_metrics;
 pub use solana_rbpf;
 pub mod invoke_context;
 pub mod loaded_programs;
-pub mod log_collector;
 pub mod mem_pool;
 pub mod stable_log;
 pub mod sysvar_cache;

+ 1 - 1
program-runtime/src/stable_log.rs

@@ -3,9 +3,9 @@
 //! The format of these log messages should not be modified to avoid breaking downstream consumers
 //! of program logging
 use {
-    crate::{ic_logger_msg, log_collector::LogCollector},
     base64::{prelude::BASE64_STANDARD, Engine},
     itertools::Itertools,
+    solana_log_collector::{ic_logger_msg, LogCollector},
     solana_sdk::pubkey::Pubkey,
     std::{cell::RefCell, rc::Rc},
 };

+ 1 - 0
program-test/Cargo.toml

@@ -24,6 +24,7 @@ solana-banks-server = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-inline-spl = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-logger = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-runtime = { workspace = true }

+ 3 - 2
program-test/src/lib.rs

@@ -16,9 +16,10 @@ use {
     solana_banks_server::banks_server::start_local_server,
     solana_bpf_loader_program::serialization::serialize_parameters,
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_log_collector::ic_msg,
     solana_program_runtime::{
-        ic_msg, invoke_context::BuiltinFunctionWithContext, loaded_programs::ProgramCacheEntry,
-        stable_log, timings::ExecuteTimings,
+        invoke_context::BuiltinFunctionWithContext, loaded_programs::ProgramCacheEntry, stable_log,
+        timings::ExecuteTimings,
     },
     solana_runtime::{
         accounts_background_service::{AbsRequestSender, SnapshotRequestKind},

+ 1 - 0
programs/address-lookup-table/Cargo.toml

@@ -19,6 +19,7 @@ solana-program = { workspace = true }
 thiserror = { workspace = true }
 
 [target.'cfg(not(target_os = "solana"))'.dependencies]
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 

+ 2 - 1
programs/address-lookup-table/src/processor.rs

@@ -1,5 +1,6 @@
 use {
-    solana_program_runtime::{declare_process_instruction, ic_msg, invoke_context::InvokeContext},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::{declare_process_instruction, invoke_context::InvokeContext},
     solana_sdk::{
         address_lookup_table::{
             instruction::ProgramInstruction,

+ 1 - 0
programs/bpf_loader/Cargo.toml

@@ -17,6 +17,7 @@ log = { workspace = true }
 scopeguard = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-curve25519 = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-measure = { workspace = true }
 solana-poseidon = { workspace = true }
 solana-program-runtime = { workspace = true }

+ 1 - 2
programs/bpf_loader/src/lib.rs

@@ -6,15 +6,14 @@ pub mod syscalls;
 
 use {
     solana_compute_budget::compute_budget::MAX_INSTRUCTION_STACK_DEPTH,
+    solana_log_collector::{ic_logger_msg, ic_msg, LogCollector},
     solana_measure::measure::Measure,
     solana_program_runtime::{
-        ic_logger_msg, ic_msg,
         invoke_context::{BpfAllocator, InvokeContext, SerializedAccountMetadata, SyscallContext},
         loaded_programs::{
             LoadProgramMetrics, ProgramCacheEntry, ProgramCacheEntryOwner, ProgramCacheEntryType,
             DELAY_VISIBILITY_SLOT_OFFSET,
         },
-        log_collector::LogCollector,
         mem_pool::VmMemoryPool,
         stable_log,
         sysvar_cache::get_sysvar_with_account_check,

+ 2 - 3
programs/bpf_loader/src/syscalls/mod.rs

@@ -13,10 +13,9 @@ pub use self::{
 #[allow(deprecated)]
 use {
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_log_collector::{ic_logger_msg, ic_msg},
     solana_poseidon as poseidon,
-    solana_program_runtime::{
-        ic_logger_msg, ic_msg, invoke_context::InvokeContext, stable_log, timings::ExecuteTimings,
-    },
+    solana_program_runtime::{invoke_context::InvokeContext, stable_log, timings::ExecuteTimings},
     solana_rbpf::{
         declare_builtin_function,
         memory_region::{AccessType, MemoryMapping},

+ 1 - 0
programs/config/Cargo.toml

@@ -14,6 +14,7 @@ bincode = { workspace = true }
 chrono = { workspace = true, features = ["default", "serde"] }
 serde = { workspace = true }
 serde_derive = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 

+ 2 - 1
programs/config/src/config_processor.rs

@@ -3,7 +3,8 @@
 use {
     crate::ConfigKeys,
     bincode::deserialize,
-    solana_program_runtime::{declare_process_instruction, ic_msg},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::declare_process_instruction,
     solana_sdk::{
         instruction::InstructionError, program_utils::limited_deserialize, pubkey::Pubkey,
         transaction_context::IndexOfAccount,

+ 1 - 0
programs/loader-v4/Cargo.toml

@@ -11,6 +11,7 @@ edition = { workspace = true }
 [dependencies]
 log = { workspace = true }
 solana-compute-budget = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-measure = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }

+ 1 - 2
programs/loader-v4/src/lib.rs

@@ -1,14 +1,13 @@
 use {
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_log_collector::{ic_logger_msg, LogCollector},
     solana_measure::measure::Measure,
     solana_program_runtime::{
-        ic_logger_msg,
         invoke_context::InvokeContext,
         loaded_programs::{
             LoadProgramMetrics, ProgramCacheEntry, ProgramCacheEntryType,
             DELAY_VISIBILITY_SLOT_OFFSET,
         },
-        log_collector::LogCollector,
         stable_log,
     },
     solana_rbpf::{

+ 19 - 0
programs/sbf/Cargo.lock

@@ -4594,6 +4594,7 @@ dependencies = [
  "num-derive",
  "num-traits",
  "rustc_version",
+ "solana-log-collector",
  "solana-program",
  "solana-program-runtime",
  "solana-sdk",
@@ -4677,6 +4678,7 @@ dependencies = [
  "scopeguard",
  "solana-compute-budget",
  "solana-curve25519",
+ "solana-log-collector",
  "solana-measure",
  "solana-poseidon",
  "solana-program-runtime",
@@ -4812,6 +4814,7 @@ dependencies = [
  "chrono",
  "serde",
  "serde_derive",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
 ]
@@ -5166,6 +5169,7 @@ version = "2.1.0"
 dependencies = [
  "log",
  "solana-compute-budget",
+ "solana-log-collector",
  "solana-measure",
  "solana-program-runtime",
  "solana-sdk",
@@ -5173,6 +5177,13 @@ dependencies = [
  "solana_rbpf",
 ]
 
+[[package]]
+name = "solana-log-collector"
+version = "2.1.0"
+dependencies = [
+ "log",
+]
+
 [[package]]
 name = "solana-logger"
 version = "2.1.0"
@@ -5353,6 +5364,7 @@ dependencies = [
  "rustc_version",
  "serde",
  "solana-compute-budget",
+ "solana-log-collector",
  "solana-measure",
  "solana-metrics",
  "solana-sdk",
@@ -5381,6 +5393,7 @@ dependencies = [
  "solana-bpf-loader-program",
  "solana-compute-budget",
  "solana-inline-spl",
+ "solana-log-collector",
  "solana-logger",
  "solana-program-runtime",
  "solana-runtime",
@@ -5682,6 +5695,7 @@ dependencies = [
  "solana-cli-output",
  "solana-compute-budget",
  "solana-ledger",
+ "solana-log-collector",
  "solana-logger",
  "solana-measure",
  "solana-program",
@@ -6207,6 +6221,7 @@ dependencies = [
  "log",
  "rustc_version",
  "solana-config-program",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-type-overrides",
@@ -6306,6 +6321,7 @@ dependencies = [
  "solana-bpf-loader-program",
  "solana-compute-budget",
  "solana-loader-v4-program",
+ "solana-log-collector",
  "solana-measure",
  "solana-metrics",
  "solana-program-runtime",
@@ -6323,6 +6339,7 @@ dependencies = [
  "log",
  "serde",
  "serde_derive",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-type-overrides",
@@ -6590,6 +6607,7 @@ dependencies = [
  "bytemuck",
  "num-derive",
  "num-traits",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-zk-sdk",
@@ -6629,6 +6647,7 @@ dependencies = [
  "bytemuck",
  "num-derive",
  "num-traits",
+ "solana-log-collector",
  "solana-program-runtime",
  "solana-sdk",
  "solana-zk-token-sdk",

+ 2 - 0
programs/sbf/Cargo.toml

@@ -32,6 +32,7 @@ solana-cli-output = { path = "../../cli-output", version = "=2.1.0" }
 solana-compute-budget = { path = "../../compute-budget", version = "=2.1.0" }
 solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.0" }
 solana-ledger = { path = "../../ledger", version = "=2.1.0" }
+solana-log-collector = { path = "../../log-collector", version = "=2.1.0" }
 solana-logger = { path = "../../logger", version = "=2.1.0" }
 solana-measure = { path = "../../measure", version = "=2.1.0" }
 solana-poseidon = { path = "../../poseidon/", version = "=2.1.0" }
@@ -93,6 +94,7 @@ solana-bpf-loader-program = { workspace = true }
 solana-cli-output = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-ledger = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-logger = { workspace = true }
 solana-measure = { workspace = true }
 solana-program = { workspace = true }

+ 1 - 0
programs/stake/Cargo.toml

@@ -13,6 +13,7 @@ edition = { workspace = true }
 bincode = { workspace = true }
 log = { workspace = true }
 solana-config-program = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-type-overrides = { workspace = true }

+ 2 - 1
programs/stake/src/stake_state.rs

@@ -9,7 +9,8 @@
 )]
 pub use solana_sdk::stake::state::*;
 use {
-    solana_program_runtime::{ic_msg, invoke_context::InvokeContext},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::invoke_context::InvokeContext,
     solana_sdk::{
         account::{AccountSharedData, ReadableAccount},
         account_utils::StateMut,

+ 1 - 0
programs/system/Cargo.toml

@@ -14,6 +14,7 @@ bincode = { workspace = true }
 log = { workspace = true }
 serde = { workspace = true }
 serde_derive = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-type-overrides = { workspace = true }

+ 2 - 1
programs/system/src/system_instruction.rs

@@ -1,5 +1,6 @@
 use {
-    solana_program_runtime::{ic_msg, invoke_context::InvokeContext},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::invoke_context::InvokeContext,
     solana_sdk::{
         instruction::{checked_add, InstructionError},
         nonce::{

+ 2 - 1
programs/system/src/system_processor.rs

@@ -4,8 +4,9 @@ use {
         withdraw_nonce_account,
     },
     log::*,
+    solana_log_collector::ic_msg,
     solana_program_runtime::{
-        declare_process_instruction, ic_msg, invoke_context::InvokeContext,
+        declare_process_instruction, invoke_context::InvokeContext,
         sysvar_cache::get_sysvar_with_account_check,
     },
     solana_sdk::{

+ 1 - 0
programs/zk-elgamal-proof/Cargo.toml

@@ -12,6 +12,7 @@ edition = { workspace = true }
 bytemuck = { workspace = true }
 num-derive = { workspace = true }
 num-traits = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-zk-sdk = { workspace = true }

+ 2 - 1
programs/zk-elgamal-proof/src/lib.rs

@@ -2,7 +2,8 @@
 
 use {
     bytemuck::Pod,
-    solana_program_runtime::{declare_process_instruction, ic_msg, invoke_context::InvokeContext},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::{declare_process_instruction, invoke_context::InvokeContext},
     solana_sdk::{instruction::InstructionError, system_program},
     solana_zk_sdk::zk_elgamal_proof_program::{
         id,

+ 1 - 0
programs/zk-token-proof/Cargo.toml

@@ -12,6 +12,7 @@ edition = { workspace = true }
 bytemuck = { workspace = true }
 num-derive = { workspace = true }
 num-traits = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-zk-token-sdk = { workspace = true }

+ 2 - 1
programs/zk-token-proof/src/lib.rs

@@ -2,7 +2,8 @@
 
 use {
     bytemuck::Pod,
-    solana_program_runtime::{declare_process_instruction, ic_msg, invoke_context::InvokeContext},
+    solana_log_collector::ic_msg,
+    solana_program_runtime::{declare_process_instruction, invoke_context::InvokeContext},
     solana_sdk::{
         feature_set,
         instruction::{InstructionError, TRANSACTION_LEVEL_STACK_HEIGHT},

+ 1 - 0
svm/Cargo.toml

@@ -20,6 +20,7 @@ solana-compute-budget = { workspace = true }
 solana-frozen-abi = { workspace = true, optional = true }
 solana-frozen-abi-macro = { workspace = true, optional = true }
 solana-loader-v4-program = { workspace = true }
+solana-log-collector = { workspace = true }
 solana-measure = { workspace = true }
 solana-metrics = { workspace = true }
 solana-program-runtime = { workspace = true }

+ 1 - 1
svm/src/transaction_processor.rs

@@ -22,6 +22,7 @@ use {
         compute_budget_processor::process_compute_budget_instructions,
     },
     solana_loader_v4_program::create_program_runtime_environment_v2,
+    solana_log_collector::LogCollector,
     solana_measure::{measure, measure::Measure},
     solana_program_runtime::{
         invoke_context::{EnvironmentConfig, InvokeContext},
@@ -29,7 +30,6 @@ use {
             ForkGraph, ProgramCache, ProgramCacheEntry, ProgramCacheForTxBatch,
             ProgramCacheMatchCriteria,
         },
-        log_collector::LogCollector,
         sysvar_cache::SysvarCache,
         timings::{ExecuteTimingType, ExecuteTimings},
     },

+ 1 - 1
svm/tests/conformance.rs

@@ -7,10 +7,10 @@ use {
     prost::Message,
     solana_bpf_loader_program::syscalls::create_program_runtime_environment_v1,
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_log_collector::LogCollector,
     solana_program_runtime::{
         invoke_context::{EnvironmentConfig, InvokeContext},
         loaded_programs::{ProgramCacheEntry, ProgramCacheForTxBatch, ProgramRuntimeEnvironments},
-        log_collector::LogCollector,
         solana_rbpf::{
             program::{BuiltinProgram, FunctionRegistry},
             vm::Config,