首页 > 其他分享 >如何将rust日志输出到android终端

如何将rust日志输出到android终端

时间:2024-10-24 09:33:21浏览次数:7  
标签:log flutter debug android logger rust 日志

本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你

背景

在 Rust 中,使用 println!打印日志时,输出实际上是发送到标准输出(stdout),而 Android Logcat 专门用于处理和显示应用程序的日志信息,此环境下标准输出实现被重新定义。这意味着 Rust 日志输出不会出现在 Logcat 中。

android_logger直接与 Android 的日志系统集成,确保日志信息可以按预期出现在 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 是一个日志记录的抽象库,提供了一套统一的接口,用于记录日志消息(如 info!、warn!、error! 等)。而 android_logger 是 log 针对 android 平台的一种具体实现。
  • 虽然 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 设备执行 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 中每次修改日志后执行 cargo clean。 直接运行对于平台支持命令(如 flutter 的话 flutter run)即可看到修改后日志生效输出,。

标签:log,flutter,debug,android,logger,rust,日志
From: https://www.cnblogs.com/programmingBB/p/18498871

相关文章

  • 一个著名的日志系统是怎么设计出来的
    原文:一个著名的日志系统是怎么设计出来的1前言Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能:输出日志。对于这一点,IO大臣其实非常清楚,日志是个很重要的东西,因为程序运行起......
  • 2024/10/23日 日志--》关于Maven的基础学习--2 坐标与依赖范围
    对Maven的学习即将步入卫生,下面是Maven中的坐标和依赖范围的简单笔记点击查看代码--Maven坐标详解--·什么是坐标?---》Maven中的坐标是资源的唯一标识---》使用坐标来定义项目或引入项目中需要的依赖--·Maven坐标的主要组成---》groupld:定义当前Maven项目隶......
  • rust使用jwt
    tomljsonwebtoken="9"rsuseserde::{Deserialize,Serialize};usechrono::Utc;usejsonwebtoken::errors::ErrorKind;usejsonwebtoken::{decode,encode,Algorithm,DecodingKey,EncodingKey,Header,Validation};#[derive(Debug,Serialize,Deser......
  • FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库LD
    ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统。ijkplayer的源码托管地址为https://github.com/bilibili/ijkplayer,截止2024年9月15日,ijkplayer获得3.24万星标数,以及0.81万个分支数,而这还是ijkplayer停止更新6年之后的数据......
  • Android之Manifest.xml文件的标签+属性
    Manifest.xml文件结构目录<?xmlversion="1.0"encoding="utf-8"?><manifest><uses-permission/><permission/><permission-tree/><permission-group/><instrumentation/>&......
  • FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
    ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统。ijkplayer的源码托管地址为https://github.com/bilibili/ijkplayer,截止2024年9月15日,ijkplayer获得3.24万星标数,以及0.81万个分支数,而这还是ijkplayer停止更新6年之后的数据......
  • 如何从 Android 设备远程访问 PC 文件?
    方法1.如何使用AnyViewer在Android上访问PC文件步骤1:下载AnyViewerPC版和Android版AnyViewer。您需要Android版本6.0及以上,然后在PC和Android设备上启动。步骤2:创建AnyViewer帐户并使用它登录您的设备(WindowsPC和Android手机)。步骤3:导航到And......
  • android studio浏览页面一直Initializing无法预览解决方案
    今天不知道为什么新建的项目出现了这样的情况。点了好几次gradle大象也没用。方法一(成功解决):清除项目配置和Gradle缓存删除配置文件:删除项目的配置信息和 .gradle 目录下的配置文件。重启开发工具:重新启动AndroidStudio。等待初始化:等待AndroidStudio完成初始......
  • 基于Android的计算机精品课程学习系统(源码+文档)
    项目简介在当今数字化学习的时代,这样一个结合了先进技术的学习系统为计算机课程的学习带来了极大的便利。在设计上,系统充分考虑了学生的学习需求和习惯。对于Android端用户,提供简洁美观的界面。课程展示部分清晰地列出了各种计算机精品课程,包括课程简介、大纲、授课教......
  • Android开发教程二维码扫描功能
    Android开发教程二维码扫描功能二维码扫描大一点的app都有的功能,因为扫一下真的很方便一、思路:用zxing库二、效果图:看视频更加直观点:Android开发教程实战案例源码分享-二维码扫描功能三、关键代码:classFCaptureActivity:AppCompatActivity(),SurfaceHolder......