我在Android root中附加了init.rc:
service logcat /system/bin/logcat -v long -f /mnt/sdcard/logcat.log
此解决方案不会生成任何日志。 logcat.log文件不存在。
如何通过init.rc开始收集logcat输出?
答案 0 :(得分:5)
可能导致以上问题的一些事情: 1.您将服务定义为logcat。这看起来非常接近可能是保留/预先存在的名称。我会选择一个更杰出的服务名称。 2.服务没有明确的启动触发器,因此它完全依赖于其定义的上下文(即哪个初始阶段)。选择错误的阶段(即太早)并且/ mnt甚至可能不存在。 3.默认情况下,服务将以root身份运行,因此logcat.log文件将仅由root用户运行。以root身份运行进程不好。并且不好强迫读者成为root用户才能读取日志文件。
这是我用来实现你想要做的事情的方法。
问题:通常,Android日志消息仅保留在内核(易失性)内存中,因此无法在重新启动后继续存在。
解决方案:要在重新启动后保留这些日志消息,需要将它们写入持久存储(即文件系统)。以下代码定义了在init期间由Android启动的此类服务。
步骤1,定义Android init进程将生成的服务以执行此活动。这是在init.rc中。
service persistentLogging /system/bin/logcat -r 1024 -n 9 -v threadTime -f /cache/logs/log
user system
group system log
disabled
关于上述事项的说明:
步骤2,定义启动服务的触发器。这也在你的init.rc文件中。
on post-fs
mkdir /cache/logs 0775 system log
start persistentLogging
关于上述事项的说明:
答案 1 :(得分:-1)
If we need to start the logcat and collect all the log buffers after on post-fs-data/boot completed from init.rc you can use below code in init.rc file.
on property:dev.bootcomplete=1
start logging
on post-fs-data
start logging
service logging /system/bin/logcat -b all -v threadTime -f /data/directory_name/log -r 100000 -n 9
user system
group root system log
disabled