206ed8e2d6
We have already searched for the start point, the start filter check is paranoia that removes out-of-order entries that we are undoubtably interested in. Out-of-order entries occur under reader pressure, as the writer gets pushed back from in-place sorted order and lands it at the end for the reader to pick it up. If this occurred during a batch run or a logger thread wakeup, the entry could be filtered out and never output to the reader. We have to treat exact finds for start in the list as terminal when we search as they represent restarts, depending on the fact that it is impossible to have the exact same time reported in two log entries or requested from a batched reader. This does break down if a log entry has xxxxxx000 nanoseconds reported, we fix that by making sure we never log such a case and slip it by a ns. Found one case where logcat.tail_time* tests failed which was fixed with this adjustment. Test: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests Bug: 38046067 Bug: 37791296 Bug: 38341453 Change-Id: I4dd2e2596dd67b8d602160dd79661e01805227a9 |
||
---|---|---|
.. | ||
tests | ||
.clang-format | ||
Android.mk | ||
CommandListener.cpp | ||
CommandListener.h | ||
event.logtags | ||
FlushCommand.cpp | ||
FlushCommand.h | ||
libaudit.c | ||
libaudit.h | ||
LogAudit.cpp | ||
LogAudit.h | ||
LogBuffer.cpp | ||
LogBuffer.h | ||
LogBufferElement.cpp | ||
LogBufferElement.h | ||
LogBufferInterface.cpp | ||
LogBufferInterface.h | ||
LogCommand.cpp | ||
LogCommand.h | ||
logd.rc | ||
LogKlog.cpp | ||
LogKlog.h | ||
LogListener.cpp | ||
LogListener.h | ||
LogReader.cpp | ||
LogReader.h | ||
LogStatistics.cpp | ||
LogStatistics.h | ||
logtagd.rc | ||
LogTags.cpp | ||
LogTags.h | ||
LogTimes.cpp | ||
LogTimes.h | ||
LogUtils.h | ||
LogWhiteBlackList.cpp | ||
LogWhiteBlackList.h | ||
main.cpp | ||
README.auditd | ||
README.property |
The properties that logd and friends react to are: name type default description ro.logd.auditd bool true Enable selinux audit daemon ro.logd.auditd.dmesg bool true selinux audit messages sent to dmesg. ro.logd.auditd.main bool true selinux audit messages sent to main. ro.logd.auditd.events bool true selinux audit messages sent to events. persist.logd.security bool false Enable security buffer. ro.device_owner bool false Override persist.logd.security to false ro.logd.kernel bool+ svelte+ Enable klogd daemon ro.logd.statistics bool+ svelte+ Enable logcat -S statistics. ro.debuggable number if not "1", logd.statistics & ro.logd.kernel default false. logd.logpersistd.enable bool auto Safe to start logpersist daemon service logd.logpersistd string persist Enable logpersist daemon, "logcatd" turns on logcat -f in logd context. Responds to logcatd, clear and stop. logd.logpersistd.buffer persist logpersistd buffers to collect logd.logpersistd.size persist logpersistd size in MB persist.logd.logpersistd string Enable logpersist daemon, "logcatd" turns on logcat -f in logd context. persist.logd.logpersistd.buffer all logpersistd buffers to collect persist.logd.logpersistd.size 256 logpersistd size in MB persist.logd.size number ro Global default size of the buffer for all log ids at initial startup, at runtime use: logcat -b all -G <value> ro.logd.size number svelte default for persist.logd.size. Larger platform default sizes than 256KB are known to not scale well under log spam pressure. Address the spam first, resist increasing the log buffer. persist.logd.size.<buffer> number ro Size of the buffer for <buffer> log ro.logd.size.<buffer> number svelte default for persist.logd.size.<buffer> ro.config.low_ram bool false if true, logd.statistics, logd.kernel default false, logd.size 64K instead of 256K. persist.logd.filter string Pruning filter to optimize content. At runtime use: logcat -P "<string>" ro.logd.filter string "~! ~1000/!" default for persist.logd.filter. This default means to prune the oldest entries of chattiest UID, and the chattiest PID of system (1000, or AID_SYSTEM). persist.logd.timestamp string ro The recording timestamp source. "m[onotonic]" is the only supported key character, otherwise realtime. ro.logd.timestamp string realtime default for persist.logd.timestamp log.tag string persist The global logging level, VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT or SILENT. Only the first character is the key character. persist.log.tag string build default for log.tag log.tag.<tag> string persist The <tag> specific logging level. persist.log.tag.<tag> string build default for log.tag.<tag> NB: - auto - managed by /init - bool+ - "true", "false" and comma separated list of "eng" (forced false if ro.debuggable is not "1") or "svelte" (forced false if ro.config.low_ram is true). - svelte - see ro.config.low_ram for details. - svelte+ - see ro.config.low_ram and ro.debuggable for details. - ro - <base property> temporary override, ro.<base property> platform default. - persist - <base property> override, persist.<base property> platform default. - build - VERBOSE for native, DEBUG for jvm isLoggable, or developer option. - number - support multipliers (K or M) for convenience. Range is limited to between 64K and 256M for log buffer sizes. Individual log buffer ids such as main, system, ... override global default. - Pruning filter is of form of a space-separated list of [~][UID][/PID] references, where '~' prefix means to blacklist otherwise whitelist. For blacklisting, UID or PID may be a '!' to instead reference the chattiest client, with the restriction that the PID must be in the UID group 1000 (system or AID_SYSTEM).