在Android开发中查看日志主要有以下几种方法:
1. Android Studio Logcat
- 集成在Android Studio底部工具栏中的Logcat是官方推荐的日志查看工具。
- 支持按进程、标签、级别(Verbose/Debug/Info/Warning/Error)过滤日志。
- 可以自定义日志格式,显示线程、时间戳等信息。
- 关键功能:支持正则表达式搜索、日志自动滚动、保存日志到文件。
2. adb logcat命令
- 基础命令:`adb logcat` 显示所有日志,可通过管道符结合grep过滤:
bash
adb logcat | grep "关键字"
- 高级用法:
- 按优先级过滤:`adb logcat *:W`(只显示Warning及以上级别)
- 清除缓存:`adb logcat -c`
- 输出到文件:`adb logcat > log.txt`
- 按时间戳查看:`adb logcat -v time`
3. 系统级别日志
- 内核日志:通过`adb shell dmesg`查看Linux内核层日志。
- 事件日志:使用`adb logcat -b events`查看系统事件(如屏幕旋转、按键事件)。
- 无线电日志:`adb logcat -b radio`查看基带相关日志。
4. 第三方工具
- Bugly:腾讯推出的崩溃分析和日志统计工具。
- Matrix:微信开源的性能监控框架,含日志模块。
- Timber:Square开发的日志库,支持日志树的多路分发。
5. 自定义日志系统
- 通过重写Android的Logger类实现:
java
class FileLogger extends Log.VirtualLogger {
@Override void log(int priority, String tag, String msg) {
// 写入文件或网络上传
}
}
- 推荐结合Log4j或SLF4J等成熟框架使用。
6. crash日志捕获
- 实现UncaughtExceptionHandler捕获崩溃:
java
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
Log.e("CRASH", "Thread: "+t.getName(), e);
});
7. 性能日志技巧
- 使用`StrictMode`检测主线程耗时操作:
java
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.penaltyLog()
.build());
对于生产环境,建议:
1. 实现日志分级控制,通过BuildConfig.DEBUG区分开发/生产环境;
2. 敏感信息过滤,避免打印用户隐私数据;
3. 日志加密存储及异步上传机制;
4. 使用日志采样策略(如1%用户全量日志)降低服务器压力。
在查看崩溃日志时,需要关注:
崩溃堆栈中的包名(是否自己的代码);
崩溃线程(主线程或工作线程);
前后上下文日志(崩溃前5秒的关键操作);
设备信息(API级别、厂商ROM等特殊环境)。