From 9d7650b93c5e2e6453a2a3d965130a31fad09729 Mon Sep 17 00:00:00 2001 From: plein <68096727+planetoryd@users.noreply.github.com> Date: Thu, 14 Aug 2025 08:32:37 +0800 Subject: [PATCH 1/5] logging in contract and non contract env --- rust/src/lib.rs | 1 - rust/src/log.rs | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 1739abe..30475ae 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -26,7 +26,6 @@ pub(crate) mod common_generated { } pub mod client_api; -#[cfg(feature = "contract")] pub mod log; #[cfg(feature = "contract")] pub mod rand; diff --git a/rust/src/log.rs b/rust/src/log.rs index 8fc87d4..53a0577 100644 --- a/rust/src/log.rs +++ b/rust/src/log.rs @@ -1,3 +1,13 @@ +#[macro_export] +macro_rules! info { + ($fmt:expr, $($args:tt)*) => { + #[cfg(not(feature="contract"))] + tracing::info!($fmt, $($args)*); + #[cfg(feature="contract")] + info(&format!($fmt, $($args)*)); + }; +} + pub fn info(msg: &str) { let ptr = msg.as_ptr() as _; unsafe { @@ -10,3 +20,13 @@ extern "C" { #[doc(hidden)] fn __frnt__logger__info(id: i64, ptr: i64, len: i32); } + +#[test] +fn log_non_contract() { + use tracing::level_filters::LevelFilter; + + tracing_subscriber::FmtSubscriber::builder() + .with_max_level(LevelFilter::INFO) + .init(); + info!("n={}, y={:?}", 1, 2); +} From 4a9c1bdcf945b864e8d347a82f4520badd45b2e5 Mon Sep 17 00:00:00 2001 From: plein <68096727+planetoryd@users.noreply.github.com> Date: Thu, 14 Aug 2025 09:18:47 +0800 Subject: [PATCH 2/5] fix --- rust/src/log.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/rust/src/log.rs b/rust/src/log.rs index 53a0577..d80801c 100644 --- a/rust/src/log.rs +++ b/rust/src/log.rs @@ -1,10 +1,10 @@ #[macro_export] macro_rules! info { - ($fmt:expr, $($args:tt)*) => { - #[cfg(not(feature="contract"))] - tracing::info!($fmt, $($args)*); - #[cfg(feature="contract")] - info(&format!($fmt, $($args)*)); + ($($arg:tt)*) => { + #[cfg(not(feature = "contract"))] + tracing::info!($($arg)*); + #[cfg(feature = "contract")] + info(&format!($($arg)*)); }; } @@ -15,6 +15,7 @@ pub fn info(msg: &str) { } } + #[link(wasm_import_module = "freenet_log")] extern "C" { #[doc(hidden)] @@ -29,4 +30,5 @@ fn log_non_contract() { .with_max_level(LevelFilter::INFO) .init(); info!("n={}, y={:?}", 1, 2); + info!("zk"); } From 2f7813364bb5d68cdfe22e27328b3c087d62a22e Mon Sep 17 00:00:00 2001 From: plein <68096727+planetoryd@users.noreply.github.com> Date: Thu, 14 Aug 2025 09:31:22 +0800 Subject: [PATCH 3/5] fix --- rust/src/log.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rust/src/log.rs b/rust/src/log.rs index d80801c..22450b6 100644 --- a/rust/src/log.rs +++ b/rust/src/log.rs @@ -4,7 +4,7 @@ macro_rules! info { #[cfg(not(feature = "contract"))] tracing::info!($($arg)*); #[cfg(feature = "contract")] - info(&format!($($arg)*)); + ::freenet_stdlib::log::info(&format!($($arg)*)); }; } @@ -15,7 +15,6 @@ pub fn info(msg: &str) { } } - #[link(wasm_import_module = "freenet_log")] extern "C" { #[doc(hidden)] From 3b07855d5818856a0e2ed5cfd2a61a6292b4115e Mon Sep 17 00:00:00 2001 From: plein <68096727+planetorDyd@users.noreply.github.com> Date: Mon, 13 Oct 2025 23:01:14 +0800 Subject: [PATCH 4/5] test log in contract --- rust/examples/contract.rs | 55 +++++++++++++++++++++++++++++++++++++++ rust/src/log.rs | 11 -------- 2 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 rust/examples/contract.rs diff --git a/rust/examples/contract.rs b/rust/examples/contract.rs new file mode 100644 index 0000000..ee931f7 --- /dev/null +++ b/rust/examples/contract.rs @@ -0,0 +1,55 @@ +//! Includes testing for logging +// ANCHOR: contractifce +use freenet_stdlib::{info, prelude::*}; + +pub const RANDOM_SIGNATURE: &[u8] = &[6, 8, 2, 5, 6, 9, 9, 10]; + +struct Contract; + +#[contract] +impl ContractInterface for Contract { + fn validate_state( + _parameters: Parameters<'static>, + _state: State<'static>, + _related: RelatedContracts<'static>, + ) -> Result { + unimplemented!() + } + + fn update_state( + _parameters: Parameters<'static>, + _state: State<'static>, + _data: Vec>, + ) -> Result, ContractError> { + info!("state update"); + todo!() + } + + fn summarize_state( + _parameters: Parameters<'static>, + _state: State<'static>, + ) -> Result, ContractError> { + unimplemented!() + } + + fn get_state_delta( + _parameters: Parameters<'static>, + _state: State<'static>, + _summary: StateSummary<'static>, + ) -> Result, ContractError> { + unimplemented!() + } +} +// ANCHOR_END: contractifce + +fn main() {} + +#[test] +fn test_log() { + use tracing::level_filters::LevelFilter; + + tracing_subscriber::FmtSubscriber::builder() + .with_max_level(LevelFilter::INFO) + .init(); + info!("state update"); +} diff --git a/rust/src/log.rs b/rust/src/log.rs index 22450b6..752e626 100644 --- a/rust/src/log.rs +++ b/rust/src/log.rs @@ -20,14 +20,3 @@ extern "C" { #[doc(hidden)] fn __frnt__logger__info(id: i64, ptr: i64, len: i32); } - -#[test] -fn log_non_contract() { - use tracing::level_filters::LevelFilter; - - tracing_subscriber::FmtSubscriber::builder() - .with_max_level(LevelFilter::INFO) - .init(); - info!("n={}, y={:?}", 1, 2); - info!("zk"); -} From 9d8f7007f3f9ba91818214cab67cb66680614b76 Mon Sep 17 00:00:00 2001 From: plein <68096727+planetorDyd@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:57:57 +0800 Subject: [PATCH 5/5] rm example --- rust/examples/contract.rs | 55 --------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 rust/examples/contract.rs diff --git a/rust/examples/contract.rs b/rust/examples/contract.rs deleted file mode 100644 index ee931f7..0000000 --- a/rust/examples/contract.rs +++ /dev/null @@ -1,55 +0,0 @@ -//! Includes testing for logging -// ANCHOR: contractifce -use freenet_stdlib::{info, prelude::*}; - -pub const RANDOM_SIGNATURE: &[u8] = &[6, 8, 2, 5, 6, 9, 9, 10]; - -struct Contract; - -#[contract] -impl ContractInterface for Contract { - fn validate_state( - _parameters: Parameters<'static>, - _state: State<'static>, - _related: RelatedContracts<'static>, - ) -> Result { - unimplemented!() - } - - fn update_state( - _parameters: Parameters<'static>, - _state: State<'static>, - _data: Vec>, - ) -> Result, ContractError> { - info!("state update"); - todo!() - } - - fn summarize_state( - _parameters: Parameters<'static>, - _state: State<'static>, - ) -> Result, ContractError> { - unimplemented!() - } - - fn get_state_delta( - _parameters: Parameters<'static>, - _state: State<'static>, - _summary: StateSummary<'static>, - ) -> Result, ContractError> { - unimplemented!() - } -} -// ANCHOR_END: contractifce - -fn main() {} - -#[test] -fn test_log() { - use tracing::level_filters::LevelFilter; - - tracing_subscriber::FmtSubscriber::builder() - .with_max_level(LevelFilter::INFO) - .init(); - info!("state update"); -}