14 releases
new 0.4.4 | Oct 11, 2024 |
---|---|
0.4.3 | Mar 8, 2024 |
0.4.2 | Jul 20, 2023 |
0.3.3 | Feb 15, 2023 |
0.1.3 | Mar 2, 2021 |
#122 in Debugging
2,807 downloads per month
Used in northstar
49KB
858 lines
android-logd-logger
This logger writes logs to the Android logd
, a system service with
multiple ringbuffers for logs and evens. This is normally done
via liblog
(a native Android lib). Instead of using liblog
, this crate
writes directly to the logd
socket with the trivial protocol below.
This logger is written in pure Rust without any need for ffi.
On non Android system the log output is printed to stdout in the default
format of logcat
.
Usage
Add this to your Cargo.toml
[dependencies]
android-logd-logger = "0.4.3"
Initialize the logger with a fixed tag
and the module path included
in the log payload.
fn main() {
android_logd_logger::builder()
.parse_filters("debug")
.tag(TagMode::TargetStrip)
.prepend_module(true)
.init();
trace!("trace message: is not logged");
debug!("debug message");
info!("info message");
warn!("warn message");
error!("error message");
}
To write android logd "events" use event
or event_now
, e.g:
android_logd_logger::write_event_now(1, "test").unwrap();
Configuration
Writing to the logd socket is a single point of synchronization for threads.
The android-logd-logger
can be configured with the tls
feature to maintain
one socket per thread or use a single socket for the whole process.
Use the features tls
if you want less interference between threads but pay
for one connection per thread.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Dependencies
~4–12MB
~114K SLoC