Merge "logd: Add support for *.logd.filter"
This commit is contained in:
commit
95ec339f5e
3 changed files with 52 additions and 10 deletions
|
|
@ -17,6 +17,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include <base/stringprintf.h>
|
#include <base/stringprintf.h>
|
||||||
|
#include <cutils/properties.h>
|
||||||
|
|
||||||
#include "LogWhiteBlackList.h"
|
#include "LogWhiteBlackList.h"
|
||||||
|
|
||||||
|
|
@ -49,7 +50,8 @@ std::string Prune::format() {
|
||||||
return std::string("/");
|
return std::string("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
PruneList::PruneList() : mWorstUidEnabled(true) {
|
PruneList::PruneList() {
|
||||||
|
init(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
PruneList::~PruneList() {
|
PruneList::~PruneList() {
|
||||||
|
|
@ -72,13 +74,44 @@ int PruneList::init(const char *str) {
|
||||||
it = mNaughty.erase(it);
|
it = mNaughty.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!str) {
|
static const char _default[] = "default";
|
||||||
return 0;
|
// default here means take ro.logd.filter, persist.logd.filter then
|
||||||
|
// internal default in that order.
|
||||||
|
if (str && !strcmp(str, _default)) {
|
||||||
|
str = NULL;
|
||||||
|
}
|
||||||
|
static const char _disable[] = "disable";
|
||||||
|
if (str && !strcmp(str, _disable)) {
|
||||||
|
str = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string filter;
|
||||||
|
|
||||||
|
if (str) {
|
||||||
|
filter = str;
|
||||||
|
} else {
|
||||||
|
char property[PROPERTY_VALUE_MAX];
|
||||||
|
property_get("ro.logd.filter", property, _default);
|
||||||
|
filter = property;
|
||||||
|
property_get("persist.logd.filter", property, filter.c_str());
|
||||||
|
// default here means take ro.logd.filter
|
||||||
|
if (strcmp(property, _default)) {
|
||||||
|
filter = property;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// default here means take internal default.
|
||||||
|
if (filter == _default) {
|
||||||
|
// See README.property for description of filter format
|
||||||
|
filter = "~!";
|
||||||
|
}
|
||||||
|
if (filter == _disable) {
|
||||||
|
filter = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
mWorstUidEnabled = false;
|
mWorstUidEnabled = false;
|
||||||
|
|
||||||
for(; *str; ++str) {
|
for(str = filter.c_str(); *str; ++str) {
|
||||||
if (isspace(*str)) {
|
if (isspace(*str)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,16 +12,24 @@ ro.build.type string if user, logd.statistics & logd.klogd
|
||||||
default false
|
default false
|
||||||
persist.logd.logpersistd string Enable logpersist daemon, "logcatd"
|
persist.logd.logpersistd string Enable logpersist daemon, "logcatd"
|
||||||
turns on logcat -f in logd context
|
turns on logcat -f in logd context
|
||||||
persist.logd.size number 256K default size of the buffer for all
|
persist.logd.size number 256K Global default size of the buffer for
|
||||||
log ids at initial startup, at runtime
|
all log ids at initial startup, at
|
||||||
use: logcat -b all -G <value>
|
runtime use: logcat -b all -G <value>
|
||||||
persist.logd.size.main number 256K Size of the buffer for the main log
|
persist.logd.size.main number 256K Size of the buffer for the main log
|
||||||
persist.logd.size.system number 256K Size of the buffer for the system log
|
persist.logd.size.system number 256K Size of the buffer for the system log
|
||||||
persist.logd.size.radio number 256K Size of the buffer for the radio log
|
persist.logd.size.radio number 256K Size of the buffer for the radio log
|
||||||
persist.logd.size.event number 256K Size of the buffer for the event log
|
persist.logd.size.event number 256K Size of the buffer for the event log
|
||||||
persist.logd.size.crash number 256K Size of the buffer for the crash log
|
persist.logd.size.crash number 256K Size of the buffer for the crash log
|
||||||
|
persist.logd.filter string Pruning filter to optimize content,
|
||||||
|
default is ro.logd.filter or
|
||||||
|
"~!" which means to prune the oldest
|
||||||
|
entries of chattiest UID. At runtime
|
||||||
|
use: logcat -P "<string>"
|
||||||
|
|
||||||
NB:
|
NB:
|
||||||
- number support multipliers (K or M) for convenience. Range is limited
|
- Number support multipliers (K or M) for convenience. Range is limited
|
||||||
to between 64K and 256M for log buffer sizes. Individual logs override the
|
to between 64K and 256M for log buffer sizes. Individual log buffer ids
|
||||||
global default.
|
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 may be a '!' to instead reference the chattiest client.
|
||||||
|
|
|
||||||
|
|
@ -212,6 +212,7 @@ static void *reinit_thread_start(void * /*obj*/) {
|
||||||
// Anything that reads persist.<property>
|
// Anything that reads persist.<property>
|
||||||
if (logBuf) {
|
if (logBuf) {
|
||||||
logBuf->init();
|
logBuf->init();
|
||||||
|
logBuf->initPrune(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue