로깅

log 크레이트를 사용하면 안드로이드 디바이스 안에서 수행될 때에는 logcat으로, 호스트에서 수행될 때에는 stdout으로 로그가 자동으로 출력이 되도록 할 수 있습니다:

hello_rust_logs/Android.bp:

rust_binary {
    name: "hello_rust_logs",
    crate_name: "hello_rust_logs",
    srcs: ["src/main.rs"],
    rustlibs: [
        "liblog_rust",
        "liblogger",
    ],
    host_supported: true,
}

hello_rust_logs/src/main.rs:

//! Rust 로깅 데모입니다.

use log::{debug, error, info};

/// 인사말을 기록합니다.
fn main() {
    logger::init(
        logger::Config::default()
            .with_tag_on_device("rust")
            .with_min_level(log::Level::Trace),
    );
    debug!("프로그램을 시작하는 중입니다.");
    info!("잘 진행되고 있습니다.");
    error!("문제가 발생했습니다!");
}

빌드하고, 가상 디바이스에 넣고, 실행합니다:

m hello_rust_logs
adb push "$ANDROID_PRODUCT_OUT/system/bin/hello_rust_logs" /data/local/tmp
adb shell /data/local/tmp/hello_rust_logs

adb logcat커맨드로 로그를 확인합니다:

adb logcat -s rust
09-08 08:38:32.454  2420  2420 D rust: hello_rust_logs: Starting program.
09-08 08:38:32.454  2420  2420 I rust: hello_rust_logs: Things are going fine.
09-08 08:38:32.454  2420  2420 E rust: hello_rust_logs: Something went wrong!