日志收集注意事项
流量费用
个人信息脱敏:VIN,位置,经纬度,电话,姓名,卡号,邮箱、身份证号、登录密码
/data/anr/*
Android Dropbox 是 Android 在 Froyo(API level 8) 引入的用来持续化存储系统数据的机制。主要用于记录 Android 运行过程中, 内核, 系统进程, 用户进程等出现严重问题时的 log, 可以认为这是一个可持续存储的系统级别的 logcat。
利用 DropBoxManager 来记录需要持久化存储的错误日志信息
DropBoxManager 提供了 logcat 之外的另外一种错误日志记录机制, 程序可以在出错的时候自动将相关信息记录到 DropBoxManager 中. 相对于 logcat, DropBoxManager 更适合于程序的自动抓错, 避免人为因素而产生的错误遗漏. 并且 DropBoxManager 是 Android 系统的公开服务, 相对于很多私有实现, 出现兼容性问题的几率会大大降低.
错误自动上报
可以将 DropBoxManager 和设备的 BugReport 结合起来, 实现自动上报错误到服务器. 每当生成新的记录, DropBoxManager 就会广播一个 DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED Intent, 设备的 BugReport 服务需要侦听这个 Intent, 然后触发错误的自动上报.
* Broadcast Action: This is broadcast(ACTION_DROPBOX_ENTRY_ADDED) when a new entry is added in the dropbox. 64 * You must hold the {@link android.Manifest.permission#READ_LOGS} permission 65 * in order to receive this broadcast.
private static final int DEFAULT_AGE_SECONDS = 3 * 86400;:文件最长可存活时长为3天
private static final int DEFAULT_MAX_FILES = 1000;:最大dropbox文件个数为1000
private static final int DEFAULT_QUOTA_KB = 5 * 1024:分配dropbox空间的最大值5M
private static final int DEFAULT_QUOTA_PERCENT = 10:是指dropbox目录最多可占用空间比例10%
private static final int DEFAULT_RESERVE_PERCENT = 10;:是指dropbox不可使用的存储空间比例10%
private static final int QUOTA_RESCAN_MILLIS = 5000;重新扫描retrim时长为5s
processClass列举:system_server, system_app, data_app;
eventType列举:分为crash anr watchdog wtf strict_mode lowmem
netstats_error Kernel Panic SYSTEM_BOOT SYSTEM_RESTART
BATTERY_DISCHARGE_INFO SYSTEM_TOMBSTONE
/data/system/dropbox/*
/data/system/dropbox/data_app_anr@1635688857188.txt.gz
/data/system/dropbox/data_app_crash@1635685858614.txt
/data/system/dropbox/system_app_crash@1635341371747.txt
/data/system/dropbox/system_app_strictmode@1635341361852.txt.gz
/data/system/dropbox/system_app_wtf@1635341363530.txt
/data/system/dropbox/system_server_wtf@1635341361641.txt
/data/system/dropbox/system_server_lowmem@1641394441726.txt.gz
What a Terrible Failure: Report a condition that should never happen. The error will always be logged at level ASSERT with the call stack. Depending on system configuration, a report may be added to the DropBoxManager and/or the process may be terminated immediately with an error dialog.
/data/system/dropbox/SYSTEM_BOOT@1635563762682.txt 系统启动记录 每次启动生成一个文件
data/system/dropbox/SYSTEM_TOMBSTONE@1635428760042.txt.gz
/data/tombstones/*
/data/tombstones/tombstone_00
/data/system/usagestats/*
logcat的日志在
Dmesg 日志:
dmesg
calls C library's klogctl wrapper function for kernel's syslog syscall which reads kernel's ring buffer by accessing /dev/kmsg
character device. adb shell dmesg
returns permissions denied error because adbd
which runs with context u:r:shell:s0
is not allowed by SELinux to read kernel log. You need to explicitly allow it (requires root):
~# supolicy --live 'allow shell kernel system syslog_read'
If property ro.logd.kernel is set to true
(default on debuggable
builds), Android's logging daemon (logd
) writes kernel messages to a separate buffer named kernel
, which can be read using logcat
(doesn't require root):
~$ logcat -b kernel