jito_restaking_cli/
log.rs1use std::io::Write;
2
3use chrono::Local;
4use env_logger::{
5 fmt::{Color, Formatter, Style, StyledValue},
6 Env,
7};
8use log::Record;
9use solana_sdk::{bs58, instruction::Instruction};
10pub fn init_logger() {
11 env_logger::Builder::from_env(Env::default().default_filter_or("info"))
12 .format(format_log_message)
13 .init();
14}
15
16fn format_log_message(buf: &mut Formatter, record: &Record) -> std::io::Result<()> {
17 let mut style = buf.style();
18 let level = colored_level(&mut style, record.level());
19
20 let timestamp = Local::now().format("%Y-%m-%d %H:%M:%S%.3f");
21
22 writeln!(
23 buf,
24 "[{} {} {}] {}",
25 timestamp,
26 level,
27 record.target(),
28 record.args()
29 )
30}
31
32fn colored_level(style: &mut Style, level: log::Level) -> StyledValue<&'static str> {
33 match level {
34 log::Level::Trace => style.set_color(Color::Magenta).value("TRACE"),
35 log::Level::Debug => style.set_color(Color::Blue).value("DEBUG"),
36 log::Level::Info => style.set_color(Color::Green).value("INFO "),
37 log::Level::Warn => style.set_color(Color::Yellow).value("WARN "),
38 log::Level::Error => style.set_color(Color::Red).value("ERROR"),
39 }
40}
41
42pub(crate) fn print_base58_tx(ixs: &[Instruction]) {
43 ixs.iter().for_each(|ix| {
44 log::info!("\n------ IX ------\n");
45
46 println!("{}\n", ix.program_id);
47
48 ix.accounts.iter().for_each(|account| {
49 let pubkey = format!("{}", account.pubkey);
50 let writable = if account.is_writable { "W" } else { "" };
51 let signer = if account.is_signer { "S" } else { "" };
52
53 println!("{:<44} {:>2} {:>1}", pubkey, writable, signer);
54 });
55
56 println!("\n");
57
58 let base58_string = bs58::encode(&ix.data).into_string();
59 println!("{}\n", base58_string);
60 });
61}