logcat 设置缓存区 设置buff

本文介绍了Android系统中Logcat的两种缓冲区分配方式:Kernel级和Logd级,并详细解释了如何通过开发者选项或命令行调整Logcat缓冲区大小。
logcat 的buff 有2种分配方式,一种是在kernel的,一种是logd, MM用的是在logd的这种的


system/core/liblog/Android.mk

ifneq ($(TARGET_USES_LOGD),false)
liblog_sources := logd_write.c log_event_write.c
else
liblog_sources := logd_write_kern.c
endif


修改logcat的buff有可以从开发者选项中设置,
也可以从logcat -G 10M 设置


root@xx:/ # logcat -g
main: ring buffer is 4Mb (839Kb consumed), max entry is 5120b, max payload is 4076b
system: ring buffer is 4Mb (2Mb consumed), max entry is 5120b, max payload is 4076b
crash: ring buffer is 4Mb (0b consumed), max entry is 5120b, max payload is 4076b
root@xx:/ # logcat -G 11M
root@xx:/ # logcat -g                                                      
main: ring buffer is 11Mb (854Kb consumed), max entry is 5120b, max payload is 4076b
system: ring buffer is 11Mb (2Mb consumed), max entry is 5120b, max payload is 4076b
crash: ring buffer is 11Mb (0b consumed), max entry is 5120b, max payload is 4076b
root@xx:/ # 
### 如何设置 Android Logcat 的默认缓冲区大小 #### 默认缓冲区大小概述 Logcat 是 Android 中的一个重要调试工具,它提供了多个日志缓冲区来存储不同类型的日志消息。这些缓冲区包括 `main`、`system`、`crash` 和 `radio` 等[^1]。每个缓冲区都有其固定的大小,默认情况下由系统的配置决定。 #### 修改缓冲区大小的方式 虽然 Logcat 自身不提供直接调整缓冲区大小的参数,但可以通过以下几种方式间接实现: 1. **通过 ADB 命令控制日志输出** 使用 `-b` 参数可以选择特定的日志缓冲区,并结合其他选项过滤和保存日志数据。例如: ```bash adb logcat -b main -v long > log_output.txt ``` 这里的 `-b main` 表示只捕获主缓冲区的内容[^4]。然而,这种方式并不能改变缓冲区本身的容量。 2. **修改系统属性 (仅适用于自定义 ROM 或有 root 权限的情况)** 如果拥有设备的 root 权限或者正在开发定制化的 Android 系统,则可以在编译时更改日志缓冲区的大小。具体来说,在源码目录下的 `frameworks/base/core/java/android/util/EventLogTags.java` 文件中找到相关配置项并进行调整[^5]。 3. **在应用层面上增加日志轮转机制** 对于应用程序内部产生的大量日志信息,建议采用文件形式记录而不是完全依赖 Logcat 缓冲区。下面是一个简单的 Java 实现例子: ```java public class Logger { private static final int MAX_LOG_COUNT = 10; // 日志最大数量 public void rotateLogs() { File dir = new File("/path/to/logs"); if (!dir.exists()) { dir.mkdirs(); } for(int i=MAX_LOG_COUNT;i>0;i--){ String oldName = "/path/to/logs/log_"+(i-1)+".txt"; String newName = "/path/to/logs/log_"+i+".txt"; File oldFile = new File(oldName); if(oldFile.exists()){ oldFile.renameTo(new File(newName)); } } try{ PrintWriter writer = new PrintWriter("/path/to/logs/log_0.txt", "UTF-8"); writer.println("New log file created."); writer.close(); }catch(Exception e){ e.printStackTrace(); } } } ``` 4. **调整 Android Studio 中 Logcat 显示缓存大小** 虽然这不会影响实际设备上的日志缓冲区大小,但在 Android Studio 中可以增大显示的历史记录长度以便查看更多历史日志。按照如下步骤操作即可完成设置:依次点击菜单栏中的 “File -> Settings -> Editor -> General -> Console”,然后将滑动条向右拖动至合适位置[^3]。 #### 总结 综上所述,对于普通开发者而言,最可行的办法是在代码层面做好自己的日志管理;而对于那些深入参与 Android 平台构建的人来说,则有机会从根本上优化整个日志子系统的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值