#log #macro #pinocchio #solana #generate #object #log-messages

macro pinocchio-log-macro

Macro for pinocchio log utility

3 releases (breaking)

new 0.4.0 Mar 19, 2025
0.3.0 Dec 18, 2024
0.1.0 Nov 10, 2024

#6 in #pinocchio

Download history 38/week @ 2024-11-29 29/week @ 2024-12-06 97/week @ 2024-12-13 30/week @ 2024-12-20 13/week @ 2025-01-03 20/week @ 2025-01-10 10/week @ 2025-01-17 6/week @ 2025-01-24 8/week @ 2025-01-31 27/week @ 2025-02-07 27/week @ 2025-02-14 65/week @ 2025-02-21 117/week @ 2025-02-28 71/week @ 2025-03-07 215/week @ 2025-03-14

468 downloads per month
Used in pinocchio-log

Apache-2.0

13KB
170 lines

pinocchio-log-macro

pinocchio-log-macro

Companion log! macro for pinocchio-log.

Overview

The macro automates the creation of a Logger object to log a message. It support a subset of the format! syntax. The macro parses the format string at compile time and generates the calls to a Logger object to generate the corresponding formatted message.

Usage

The macro works very similar to solana-program msg! macro.

To output a simple message (static &str):

use pinocchio_log::log

log!("a simple log");

To output a formatted message:

use pinocchio_log::log

let amount = 1_000_000_000;
log!("transfer amount: {}", amount);

Since a Logger size is statically determined, messages are limited to 200 length by default. When logging larger messages, it is possible to increase the logger buffer size:

use pinocchio_log::log

let very_long_message = "...";
log!(500, "message: {}", very_long_message);

It is possible to include a precision formatting for numeric values:

use pinocchio_log::log

let lamports = 1_000_000_000;
log!("transfer amount (SOL: {:.9}", lamports);

For &str types, it is possible to specify a maximum length and a truncation strategy:

use pinocchio_log::log

let program_name = "pinocchio-program";
// log message: "...program"
log!("{:<.10}", program_name); 
// log message: "pinocchio-..."
log!("{:>.10}", program_name); 

License

The code is licensed under the Apache License Version 2.0

Dependencies

~3.5–4.5MB
~91K SLoC