1#
2# init scriptures for logcatd persistent logging.
3#
4# Make sure any property changes are only performed with /data mounted, after
5# post-fs-data state because otherwise behavior is undefined. The exceptions
6# are device adjustments for logcatd service properties (persist.* overrides
7# notwithstanding) for logd.logpersistd.size logd.logpersistd.rotate_kbytes and
8# logd.logpersistd.buffer.
9
10# persist to non-persistent trampolines to permit device properties can be
11# overridden when /data mounts, or during runtime.
12on property:persist.logd.logpersistd.count=*
13    # expect /init to report failure if property empty (default)
14    setprop persist.logd.logpersistd.size ${persist.logd.logpersistd.count}
15
16on property:persist.logd.logpersistd.size=*
17    setprop logd.logpersistd.size ${persist.logd.logpersistd.size}
18
19on property:persist.logd.logpersistd.rotate_kbytes=*
20    setprop logd.logpersistd.rotate_kbytes ${persist.logd.logpersistd.rotate_kbytes}
21
22on property:persist.logd.logpersistd.buffer=*
23    setprop logd.logpersistd.buffer ${persist.logd.logpersistd.buffer}
24
25on property:persist.logd.logpersistd=logcatd
26    setprop logd.logpersistd logcatd
27
28# enable, prep and start logcatd service
29on load_persist_props_action
30    setprop logd.logpersistd.enable true
31
32on property:logd.logpersistd.enable=true && property:logd.logpersistd=logcatd
33    # log group should be able to read persisted logs
34    mkdir /data/misc/logd 0750 logd log
35    start logcatd
36
37# stop logcatd service and clear data
38on property:logd.logpersistd.enable=true && property:logd.logpersistd=clear
39    setprop persist.logd.logpersistd ""
40    stop logcatd
41    # logd for clear of only our files in /data/misc/logd
42    exec - logd log -- /system/bin/logcat -c -f /data/misc/logd/logcat -n ${logd.logpersistd.size:-256}
43    setprop logd.logpersistd ""
44
45# stop logcatd service
46on property:logd.logpersistd=stop
47    setprop persist.logd.logpersistd ""
48    stop logcatd
49    setprop logd.logpersistd ""
50
51on property:logd.logpersistd.enable=false
52    stop logcatd
53
54# logcatd service
55service logcatd /system/bin/logcatd -L -b ${logd.logpersistd.buffer:-all} -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r ${logd.logpersistd.rotate_kbytes:-2048} -n ${logd.logpersistd.size:-256} --id=${ro.build.id}
56    class late_start
57    disabled
58    # logd for write to /data/misc/logd, log group for read from log daemon
59    user logd
60    group log
61    writepid /dev/cpuset/system-background/tasks
62    oom_score_adjust -600
63