49ed105fd9
(cherry pick from commit 100658c303
)
- logpersistd is defined as a thread or process in the context of the
logd domain. Here we define logpersistd as logcat -f in logd domain
and call it logcatd to represent its service mechanics.
- Use logcatd to manage content in /data/misc/logd/ directory.
- Only turn on for persist.logd.logpersistd = logcatd.
- Add logpersist.start, logpersist.stop and logpersist.cat debug
class executables, thus only in the eng and userdebug builds.
ToDo: Wish to add Developer Options menu to turn this feature on or
off, complicated by the fact that user builds have no tools with
access rights to /data/misc/logd.
Bug: 19608716
Change-Id: I57ad757f121c473d04f9fabe9d4820a0eca06f31
36 lines
898 B
Bash
Executable file
36 lines
898 B
Bash
Executable file
#! /system/bin/sh
|
|
# logpersist cat start and stop handlers
|
|
data=/data/misc/logd
|
|
property=persist.logd.logpersistd
|
|
service=logcatd
|
|
progname="${0##*/}"
|
|
if [ X"${1}" = "-h" -o X"${1}" = X"--help" ]; then
|
|
echo "${progname%.*}.cat - dump current ${service%d} logs"
|
|
echo "${progname%.*}.start - start ${service} service"
|
|
echo "${progname%.*}.stop [--clear] - stop ${service} service"
|
|
exit 0
|
|
fi
|
|
case ${progname} in
|
|
*.cat)
|
|
su 1036 ls "${data}" |
|
|
tr -d '\r' |
|
|
sort -ru |
|
|
sed "s#^#${data}/#" |
|
|
su 1036 xargs cat
|
|
;;
|
|
*.start)
|
|
su 0 setprop ${property} ${service}
|
|
getprop ${property}
|
|
sleep 1
|
|
ps -t | grep "${data##*/}.*${service%d}"
|
|
;;
|
|
*.stop)
|
|
su 0 stop ${service}
|
|
su 0 setprop ${property} ""
|
|
[ X"${1}" != X"-c" -a X"${1}" != X"--clear" ] ||
|
|
( sleep 1 ; su 1036,9998 rm -rf "${data}" )
|
|
;;
|
|
*)
|
|
echo "Unexpected command ${0##*/} ${@}" >&2
|
|
exit 1
|
|
esac
|