Emisión de Registros
msg! y sol_log_data escriben en registros de transacciones consumidos por exploradores, indexadores y simulaciones. Úselos con moderación: cada registro consume unidades de cómputo.
Busca en todas las páginas de la documentación
msg! y sol_log_data escriben en registros de transacciones consumidos por exploradores, indexadores y simulaciones. Úselos con moderación: cada registro consume unidades de cómputo.
solana_program::msg!("vault deposit {}", amount);Cuándo usar esto:
pub fn deposit(amount: u64) -> ProgramResult {
solana_program::msg!("deposit_start amount={}", amount);
if amount == 0 {
solana_program::msg!("deposit_reject zero");
return Err(ProgramError::InvalidArgument);
}
solana_program::msg!("deposit_ok");
Ok(())
}Lo que esto demuestra:
Los registros escalan con la longitud y el número de cadenas.
solana_program::log::sol_log_data(&[b"evt", &amount.to_le_bytes()]);| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
Anchor emit! | Eventos estructurados | Solo nativo |
| Códigos de error personalizados | Experiencia de usuario | Depuración interna |
| Trazas de simulación fuera de la cadena | Solo desarrollo | Observabilidad en producción |
logMessages de metadatos de la transacción.
Limitada por las CU y los límites de la tx.
El último para fragmentos binarios.
Geyser/webhooks analizan las líneas de registro.
Común para compilaciones de lanzamiento.
Aún se emiten antes del punto de fallo.
Todos los registros se fusionan en orden.
Sí, con simulateTransaction.
Reperfilar las CU si se registran mucho.
Para un diseño centrado en el indexador, sí.
Envolver msg! en cfg.
OK a corto plazo para depuración.
Versiones de Stack: Esta página fue 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, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026