diff options
author | Mark Salyzyn <salyzyn@google.com> | 2014-10-02 13:07:05 -0700 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-06-15 07:41:03 -0700 |
commit | bd1ef90448c32e2beec4c66f08fe613bcc632cc8 (patch) | |
tree | 0bd1f2974aed9990a2128152800fcc37ff376f1d /logd | |
parent | e9c9106fbb876864c06bb94e95737fc776e9b3ce (diff) | |
download | system_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.zip system_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.tar.gz system_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.tar.bz2 |
logd: filter on __android_log_is_loggable
(cherry pick from commit e59c469fa89d438d2d7150b7d8cd6b401900709b)
- Default level when not specified is ANDROID_LOG_VERBOSE
which is inert.
Bug: 20416721
Bug: 19544788
Bug: 17760225
Change-Id: Icc098e53dc47ceaaeb24ec42eb6f61d6430ec2f6
Diffstat (limited to 'logd')
-rw-r--r-- | logd/LogBuffer.cpp | 18 | ||||
-rw-r--r-- | logd/LogBufferElement.cpp | 6 |
2 files changed, 23 insertions, 1 deletions
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp index 4373e2a..0f5071b 100644 --- a/logd/LogBuffer.cpp +++ b/logd/LogBuffer.cpp @@ -140,8 +140,26 @@ int LogBuffer::log(log_id_t log_id, log_time realtime, if ((log_id >= LOG_ID_MAX) || (log_id < 0)) { return -EINVAL; } + LogBufferElement *elem = new LogBufferElement(log_id, realtime, uid, pid, tid, msg, len); + int prio = ANDROID_LOG_INFO; + const char *tag = NULL; + if (log_id == LOG_ID_EVENTS) { + tag = android::tagToName(elem->getTag()); + } else { + prio = *msg; + tag = msg + 1; + } + if (!__android_log_is_loggable(prio, tag, ANDROID_LOG_VERBOSE)) { + // Log traffic received to total + pthread_mutex_lock(&mLogElementsLock); + stats.add(elem); + stats.subtract(elem); + pthread_mutex_unlock(&mLogElementsLock); + delete elem; + return -EACCES; + } pthread_mutex_lock(&mLogElementsLock); diff --git a/logd/LogBufferElement.cpp b/logd/LogBufferElement.cpp index 8238a52..7df1123 100644 --- a/logd/LogBufferElement.cpp +++ b/logd/LogBufferElement.cpp @@ -105,8 +105,12 @@ char *android::tidToName(pid_t tid) { size_t LogBufferElement::populateDroppedMessage(char *&buffer, LogBuffer *parent) { static const char tag[] = "chatty"; - static const char format_uid[] = "uid=%u%s%s expire %u line%s"; + if (!__android_log_is_loggable(ANDROID_LOG_INFO, tag, ANDROID_LOG_VERBOSE)) { + return 0; + } + + static const char format_uid[] = "uid=%u%s%s expire %u line%s"; char *name = parent->uidToName(mUid); char *commName = android::tidToName(mTid); if (!commName && (mTid != mPid)) { |