Android日志系统是开发者调试和监控应用的重要工具,通过Log
类提供多种日志输出方式,帮助开发者追踪程序运行状态、排查错误,日志信息会按照不同优先级被分类存储,并可通过logcat
工具查看。
日志级别 | 英文标识 | 用途 | 示例 |
---|---|---|---|
错误 | ERROR (E ) | 严重错误,程序可能无法继续运行 | Log.e("TAG", "This is an error message"); |
警告 | WARN (W ) | 非致命性问题,需关注 | Log.w("TAG", "This is a warning message"); |
信息 | INFO (I ) | 一般信息,记录关键流程 | Log.i("TAG", "User logged in"); |
调试 | DEBUG (D ) | 开发阶段详细信息 | Log.d("TAG", "Button clicked"); |
详细 | VERBOSE (V ) | 最详细日志,通常禁用 | Log.v("TAG", "Starting process..."); |
使用示例:
String tag = "MyApp"; Log.d(tag, "Debugging data processing"); Log.e(tag, "Null pointer exception occurred");
输出方式:
Log.x(TAG, message)
输出日志,TAG
用于标识日志来源。printf
): int count = 5; Log.i("MyApp", "Count value: %d", count);
查看工具:
adb logcat
)。adb logcat -s MyApp
adb logcat :E
(仅显示错误及以上)adb logcat MyApp:D :S
(显示MyApp
的调试日志,其他日志静默)存储位置:
logcat
保存到文件(adb logcat > log.txt
)。logcat
导出。性能影响:
VERBOSE
)会降低应用性能。BuildConfig.DEBUG
控制: if (BuildConfig.DEBUG) { Log.d(tag, "Debug info"); }
优化建议:
VERBOSE
和DEBUG
日志的线上残留。Timber.plant(new Timber.DebugTree()); Timber.d("Crashlytic init success");
问题 | 原因 | 解决方案 |
---|---|---|
日志不显示 | 过滤器配置错误/日志级别过低 | 检查logcat 过滤规则,确保级别匹配 |
日志太多 | 未限制日志输出 | 使用BuildConfig.DEBUG 或第三方库控制 |
内存泄漏 | 日志包含对象引用 | 避免直接打印对象(如Log.d(tag, obj.toString()) ) |
解答:
使用logcat
的-s
参数指定标签,只查看MyApp
标签的日志:
adb logcat -s MyApp
若需排除其他标签的日志,可结合通配符:
adb logcat MyApp:V :S
解答:
BuildConfig.DEBUG
判断: if (BuildConfig.DEBUG) { Log.d("MyApp", "Debug info"); }
Log.d/Log.v
调用(谨慎操作,可能影响崩溃日志)。