From 168a3fd34824adc9c6a606cd144219701f15cccf Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Wed, 17 Dec 2025 21:23:46 -0500 Subject: [Rust] Replace `log` with `tracing` - Added more documentation - Replaced global named logger for plugins, fixing the issue when the CU has multiple (e.g. statically linked demo) - Simplified some misc code This is a breaking change, but I believe there is no better time to make it, we cannot continue to use the `log` crate, it is too limited for our needs. --- plugins/svd/src/lib.rs | 19 +++++++++---------- plugins/svd/src/mapper.rs | 7 ++++--- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'plugins/svd/src') diff --git a/plugins/svd/src/lib.rs b/plugins/svd/src/lib.rs index 3a069056..396a9447 100644 --- a/plugins/svd/src/lib.rs +++ b/plugins/svd/src/lib.rs @@ -6,9 +6,8 @@ use crate::settings::LoadSettings; use binaryninja::binary_view::{BinaryView, BinaryViewBase, BinaryViewExt}; use binaryninja::command::Command; use binaryninja::interaction::{Form, FormInputField}; -use binaryninja::logger::Logger; +use binaryninja::tracing; use binaryninja::workflow::{activity, Activity, AnalysisContext, Workflow}; -use log::LevelFilter; use std::path::PathBuf; use svd_parser::ValidateLevel; @@ -120,7 +119,7 @@ impl Command for LoadSVDFile { let file_content = match std::fs::read_to_string(&file_path) { Ok(content) => content, Err(e) => { - log::error!("Failed to read file: {:?}", e); + tracing::error!("Failed to read file: {:?}", e); return; } }; @@ -137,7 +136,7 @@ impl Command for LoadSVDFile { view.update_analysis(); } Err(e) => { - log::error!("Failed to parse SVD file: {:?}", e); + tracing::error!("Failed to parse SVD file: {:?}", e); } } } @@ -152,7 +151,7 @@ impl Command for LoadSVDFile { #[cfg(not(feature = "demo"))] pub extern "C" fn CorePluginInit() -> bool { if plugin_init().is_err() { - log::error!("Failed to initialize SVD plug-in"); + tracing::error!("Failed to initialize SVD plug-in"); return false; } true @@ -163,14 +162,14 @@ pub extern "C" fn CorePluginInit() -> bool { #[cfg(feature = "demo")] pub extern "C" fn SVDPluginInit() -> bool { if plugin_init().is_err() { - log::error!("Failed to initialize SVD plug-in"); + tracing::error!("Failed to initialize SVD plug-in"); return false; } true } fn plugin_init() -> Result<(), ()> { - Logger::new("SVD").with_level(LevelFilter::Debug).init(); + binaryninja::tracing_init!("SVD"); binaryninja::command::register_command( "Load SVD File", @@ -185,13 +184,13 @@ fn plugin_init() -> Result<(), ()> { let view = ctx.view(); let load_settings = LoadSettings::from_view_settings(&view); let Some(file) = &load_settings.auto_load_file else { - log::debug!("No SVD file specified, skipping..."); + tracing::debug!("No SVD file specified, skipping..."); return; }; let file_content = match std::fs::read_to_string(file) { Ok(content) => content, Err(e) => { - log::error!("Failed to read file: {}", e); + tracing::error!("Failed to read file: {}", e); return; } }; @@ -204,7 +203,7 @@ fn plugin_init() -> Result<(), ()> { mapper.map_to_view(&view); } Err(e) => { - log::error!("Failed to parse SVD file: {:?}", e); + tracing::error!("Failed to parse SVD file: {:?}", e); } } }; diff --git a/plugins/svd/src/mapper.rs b/plugins/svd/src/mapper.rs index 4c49145b..2c09eb95 100644 --- a/plugins/svd/src/mapper.rs +++ b/plugins/svd/src/mapper.rs @@ -6,6 +6,7 @@ use binaryninja::rc::Ref; use binaryninja::section::{SectionBuilder, Semantics}; use binaryninja::segment::{SegmentBuilder, SegmentFlags}; use binaryninja::symbol::{SymbolBuilder, SymbolType}; +use binaryninja::tracing; use binaryninja::types::{ BaseStructure, EnumerationBuilder, MemberAccess, MemberScope, NamedTypeReference, NamedTypeReferenceClass, StructureBuilder, StructureMember, Type, TypeBuilder, @@ -78,7 +79,7 @@ impl DeviceMapper { } pub fn map_to_view(&self, view: &BinaryView) { - log::info!("Mapping device... {}", self.device.name); + tracing::info!("Mapping device... {}", self.device.name); for peripheral in &self.device.peripherals { match peripheral { Peripheral::Single(info) => { @@ -143,7 +144,7 @@ impl DeviceMapper { address_block: &AddressBlock, ) { let block_addr = peripheral.base_address + address_block.offset as u64; - log::info!( + tracing::info!( "Mapping peripheral block @ 0x{:x} for {}", block_addr, peripheral.name @@ -176,7 +177,7 @@ impl DeviceMapper { ); if !added_memory { - log::error!( + tracing::error!( "Failed to add memory for peripheral block! {} @ 0x{:x}", block_name, block_addr -- cgit v1.3.1