Logging com msg!
msg! escreve linhas legíveis em logs de transação. Útil para desenvolvimento e ops, mas cada chamada custa compute units - orchestre logs como qualquer código em hot path.
Busque em todas as páginas da documentação
msg! escreve linhas legíveis em logs de transação. Útil para desenvolvimento e ops, mas cada chamada custa compute units - orchestre logs como qualquer código em hot path.
solana_program::msg!("swap in={} out={}", amount_in, amount_out);Quando usar:
#[cfg(feature = "verbose_logs")]
macro_rules! vlog { ($($t:tt)*) => { solana_program::msg!($($t)*) }; }
#[cfg(not(feature = "verbose_logs"))]
macro_rules! vlog { ($($t:tt)*) => {}; }O que isso demonstra:
Logs cobram por syscall + bytes.
sol_log_data para key/value compacto.
// Prefira prefixos fixos: "MYPROG:step1"| Alternativa | Use quando | Não use quando |
|---|---|---|
| Apenas erros customizados | Voltado ao usuário | Debug interno |
| Eventos Anchor | Amigável a indexadores | CU ainda se aplica |
| Simulação off-chain | Dev | Prod |
Não trivial - simule.
Sim logMessages.
Fatias binárias.
Mesmo syscall.
Syscall log.
Limite da tx + CU.
Eventos são melhores.
Plugins Geyser.
Recomendado ou gate.
Igual.
Reperfile após upgrade.
Mostra logs no trace.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026