Android 如何保存logcat消息
接下来,我了解到logcat被保存为内核中的一个内部环形缓冲区,大小为256kb。应用程序使用特殊的API要求内核保存日志 我的设备日志要大YYYY倍。我知道这一点,因为当我Android 如何保存logcat消息,android,logcat,android-logcat,Android,Logcat,Android Logcat,接下来,我了解到logcat被保存为内核中的一个内部环形缓冲区,大小为256kb。应用程序使用特殊的API要求内核保存日志 我的设备日志要大YYYY倍。我知道这一点,因为当我adb logcat>adblogcat.txt我得到一个非常大的文件。这意味着“某物”清除内核缓冲区并将它们存储在文件系统(?)中,并且adb logcat从这个较大的文件读取数据 有人能解释一下这是怎么回事吗?我正在调查,我无法理解确切的细节 如果有人解释了重新启动时会发生什么,那么日志是否在重新启动之间保存?以下是我对
adb logcat>adblogcat.txt
我得到一个非常大的文件。这意味着“某物”清除内核缓冲区并将它们存储在文件系统(?)中,并且adb logcat
从这个较大的文件读取数据
有人能解释一下这是怎么回事吗?我正在调查,我无法理解确切的细节
如果有人解释了重新启动时会发生什么,那么日志是否在重新启动之间保存?以下是我对logcat的理解,可能有一些错误,欢迎评论:
/dev/log/
文件夹。
main将被写入/dev/log/main
收音机将被写入/dev/log/radio
...
因为都是操作员系统的I/O文件。因此,当手机重新启动时,手机将被清除。而且这些文件的大小有一定的限制,如果大小达到限制,旧日志将被覆盖logcat.cpp
的所有代码;但我可以说,logcat应用程序将在默认情况下读取system/logcat/main中的日志文件,并根据您使用的参数在屏幕或文件中输出它们public static native int println_native(int bufID,int priority,String tag,String msg)代码>
您可以找到JNI方法。如果您对它感兴趣,您可以阅读源代码以了解它在那里做什么
Runtime.exec()
执行logcat应用程序:
您可以监视引导完成的接收器,以启动logcat命令,将所有logcat的日志读取到您自己的文件中 String cmd = "logcat -v time -f yourown.file"
Process process = Runtime.getRuntime().exec(cmd);
关于4,我会在init.rc中这样做,作为启动时启动的脚本。是的,我想它可以工作。如下所示:
service goldfish logcat/system/bin/logcat>>yourfileonsdcard oneshot
这是一个用于模拟器的脚本。@buptcoder感谢您的精彩概述。我一直在Android文档中寻找这个,但是找不到@buptcoder..我无法在我的手机三星galaxy s5中看到/dev/log/(你能告诉我如何/在哪里找到这个吗?嗨,vinu,如果你的手机没有根目录,你不应该有权限评估dev文件夹。