1df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# 2df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# init scriptures for logcatd persistent logging. 3df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# 4df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# Make sure any property changes are only performed with /data mounted, after 5df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# post-fs-data state because otherwise behavior is undefined. The exceptions 6df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# are device adjustments for logcatd service properties (persist.* overrides 7df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# notwithstanding) for logd.logpersistd.size and logd.logpersistd.buffer. 8df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 9df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# persist to non-persistent trampolines to permit device properties can be 10df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# overridden when /data mounts, or during runtime. 11df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:persist.logd.logpersistd.size=256 12df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop persist.logd.logpersistd.size "" 13df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd.size "" 14df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 15df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:persist.logd.logpersistd.size=* 16df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn # expect /init to report failure if property empty (default) 17df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd.size ${persist.logd.logpersistd.size} 18df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 19df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:persist.logd.logpersistd.buffer=all 20df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop persist.logd.logpersistd.buffer "" 21df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd.buffer "" 22df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 23df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:persist.logd.logpersistd.buffer=* 24df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn # expect /init to report failure if property empty (default) 25df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd.buffer ${persist.logd.logpersistd.buffer} 26df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 2720391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherryon property:persist.logd.logpersistd=logcatd 28df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd logcatd 29df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 30df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# enable, prep and start logcatd service 31df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon load_persist_props_action 32df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd.enable true 33df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 34df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:logd.logpersistd.enable=true && property:logd.logpersistd=logcatd 3520391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry # all exec/services are called with umask(077), so no gain beyond 0700 3620391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry mkdir /data/misc/logd 0700 logd log 3720391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry start logcatd 3820391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry 39df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# stop logcatd service and clear data 40df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:logd.logpersistd.enable=true && property:logd.logpersistd=clear 41df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop persist.logd.logpersistd "" 422d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn stop logcatd 432d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn # logd for clear of only our files in /data/misc/logd 44df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn exec - logd log -- /system/bin/logcat -c -f /data/misc/logd/logcat -n ${logd.logpersistd.size:-256} 45df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd "" 46df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn 47df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# stop logcatd service 48df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:logd.logpersistd=stop 492d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn setprop persist.logd.logpersistd "" 50df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn stop logcatd 51df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn setprop logd.logpersistd "" 522d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn 53df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzynon property:logd.logpersistd.enable=false 542d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn stop logcatd 552d737011d6ba4389b15c7ac62b8964208391b884Mark Salyzyn 56df5d12850aa114c3cd5b2913762524c55d8d2b37Mark Salyzyn# logcatd service 57558282bfe4650f7b249f5ba0a24d3a400d67b78bMark Salyzynservice logcatd /system/bin/logcatd -L -b ${logd.logpersistd.buffer:-all} -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 1024 -n ${logd.logpersistd.size:-256} --id=${ro.build.id} 5820391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry class late_start 5920391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry disabled 6020391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry # logd for write to /data/misc/logd, log group for read from log daemon 6120391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry user logd 6220391b1de5aaa49657d625fe18a36d4484c6ac31Tom Cherry group log 63984bd8323dcb5e494a04b2058ab7de40bf347ee5Tom Cherry writepid /dev/cpuset/system-background/tasks 64