如何將rust日志輸出到android終端

本博客所有文章除特別聲明外,均采用CC BY-NC-SA 4.0許可協(xié)議。轉載請注明來自 唯你

背景

在 Rust 中,使用 println!打印日志時,輸出實際上是發(fā)送到標準輸出(stdout),而 Android Logcat 專門用于處理和顯示應用程序的日志信息,此環(huán)境下標準輸出實現(xiàn)被重新定義。這意味著 Rust 日志輸出不會出現(xiàn)在 Logcat 中。

android_logger直接與 Android 的日志系統(tǒng)集成,確保日志信息可以按預期出現(xiàn)在 Logcat 中。

配置

android_logger 使用如下

注意這里使用的是 android_logger0.11.0 版本,若使用最新版本可能需要做相關 api 調整。

cargo.toml 中增加如下依賴

[dependencies]
log = "0.4"

[target.'cfg(target_os = "android")'.dependencies]
android_logger = "0.11.0"

同時引入 log 的原因:

  • log 是一個日志記錄的抽象庫,提供了一套統(tǒng)一的接口,用于記錄日志消息(如 info!、warn!、error! 等)。而 android_logger 是 log 針對 android 平臺的一種具體實現(xiàn)。
  • 雖然 android_logger 本身依賴 log,你或許以為不必再額外引用 log,但實際上 android_logger 中類似 log::LevelFilter 和 log::Level::Debug 依然依賴 log 庫。

初始化

#[cfg(target_os = "android")]
fn init_logging() {
    android_logger::init_once(
        android_logger::Config::default()
            .with_min_level(log::Level::Debug)
            .with_tag("flutter"),
    );
}

注意此處 with_min_level 級別,若為 debug 則打印時最使用必須是 debug 及以上,用 info 基本是無法打印顯示在 logcat 中的

使用

rust 文件使用如下


extern crate android_logger;

添加打印

impl PlatformTextureWithProvider for BoxedPixelData {
    fn create_texture(
        engine_handle: i64,
        payload_provider: Arc<dyn PayloadProvider<Self>>,
    ) -> Result<PlatformTexture<BoxedPixelData>> {
        //使用示例
        log::debug!("2222222223 create_texture");
        log::debug!("this is a debug {}", "raynor");

        PlatformTexture::new(engine_handle, Some(payload_provider))
    }
}

連接 android 設備執(zhí)行 flutter run 后,logcat 日志輸出如下:

√ Built build\app\outputs\flutter-apk\app-debug.apk
Installing build\app\outputs\flutter-apk\app-debug.apk...           6.3s
W/FlutterAnimationAdvance( 3237): FlutterAnimationAdvance getInstance()
D/flutter ( 3237): irondash_texture::platform::platform_impl: 2222222223 create_texture
D/flutter ( 3237): irondash_texture::platform::platform_impl: this is a debug raynor

注意

因為每次運行都會重新編譯庫文件,沒必要在 rust 中每次修改日志后執(zhí)行 cargo clean。 直接運行對于平臺支持命令(如 flutter 的話 flutter run)即可看到修改后日志生效輸出,。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容