init.rc: logd: Add logpersistd (nee logcatd)
- 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
This commit is contained in:
parent
17fff893c0
commit
100658c303
4 changed files with 63 additions and 0 deletions
|
@ -41,4 +41,15 @@ LOCAL_CFLAGS := -Werror $(event_flag)
|
|||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := logpersist.start
|
||||
LOCAL_MODULE_TAGS := debug
|
||||
LOCAL_MODULE_CLASS := EXECUTABLES
|
||||
LOCAL_MODULE_PATH := $(bin_dir)
|
||||
LOCAL_SRC_FILES := logpersist
|
||||
ALL_TOOLS := logpersist.start logpersist.stop logpersist.cat
|
||||
LOCAL_POST_INSTALL_CMD := $(hide) $(foreach t,$(filter-out $(LOCAL_MODULE),$(ALL_TOOLS)),ln -sf $(LOCAL_MODULE) $(TARGET_OUT)/bin/$(t);)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
include $(call first-makefiles-under,$(LOCAL_PATH))
|
||||
|
|
|
@ -10,6 +10,8 @@ ro.config.low_ram bool false if true, logd.statistics & logd.klogd
|
|||
default false
|
||||
ro.build.type string if user, logd.statistics & logd.klogd
|
||||
default false
|
||||
persist.logd.logpersistd string Enable logpersist daemon, "logcatd"
|
||||
turns on logcat -f in logd context
|
||||
persist.logd.size number 256K default size of the buffer for all
|
||||
log ids at initial startup, at runtime
|
||||
use: logcat -b all -G <value>
|
||||
|
|
36
logd/logpersist
Executable file
36
logd/logpersist
Executable file
|
@ -0,0 +1,36 @@
|
|||
#! /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
|
|
@ -649,3 +649,17 @@ service perfprofd /system/xbin/perfprofd
|
|||
class late_start
|
||||
user root
|
||||
oneshot
|
||||
|
||||
on property:persist.logd.logpersistd=logcatd
|
||||
# all exec/services are called with umask(077), so no gain beyond 0700
|
||||
mkdir /data/misc/logd 0700 logd log
|
||||
# logd for write to /data/misc/logd, log group for read from pstore (-L)
|
||||
exec - logd log -- /system/bin/logcat -L -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
|
||||
start logcatd
|
||||
|
||||
service logcatd /system/bin/logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
|
||||
class late_start
|
||||
disabled
|
||||
# logd for write to /data/misc/logd, log group for read from log daemon
|
||||
user logd
|
||||
group log
|
||||
|
|
Loading…
Reference in a new issue