diff --git a/src/interface.rs b/src/interface.rs index 6a708d1..12572bc 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -11,10 +11,10 @@ use serde_json::value::Value; use crate::error::Error; use crate::types::{ HWIAddress, HWIAddressType, HWIChain, HWIDescriptor, HWIDevice, HWIExtendedPubKey, - HWIKeyPoolElement, HWIPartiallySignedTransaction, HWISignature, HWIStatus, + HWIKeyPoolElement, HWIPartiallySignedTransaction, HWISignature, HWIStatus, LogLevel, }; -use pyo3::prelude::*; +use pyo3::{prelude::*, py_run}; macro_rules! deserialize_obj { ( $e: expr ) => {{ @@ -293,4 +293,28 @@ impl HWIClient { status.into() }) } + + /// Set logging level + /// # Arguments + /// * `level` - Log level. + pub fn set_log_level(level: LogLevel) -> Result<(), Error> { + Python::with_gil(|py| { + let arg = match level { + LogLevel::DEBUG => 10, + LogLevel::INFO => 20, + LogLevel::WARNING => 30, + LogLevel::ERROR => 40, + LogLevel::CRITICAL => 50, + }; + py_run!( + py, + arg, + r#" + import logging + logging.basicConfig(level=arg) + "# + ); + Ok(()) + }) + } } diff --git a/src/lib.rs b/src/lib.rs index 1a039df..d2bc611 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -218,4 +218,11 @@ mod tests { HWIClient::install_udev_rules(None, None).unwrap() } } + + #[test] + #[serial] + fn test_set_log_level() { + HWIClient::set_log_level(types::LogLevel::DEBUG).unwrap(); + test_enumerate(); + } } diff --git a/src/types.rs b/src/types.rs index c6581a0..d22ebe9 100644 --- a/src/types.rs +++ b/src/types.rs @@ -148,3 +148,10 @@ impl From for Result<(), Error> { } } } +pub enum LogLevel { + DEBUG, + INFO, + WARNING, + ERROR, + CRITICAL, +}