logd: logcat: Add persist.logd.size group of properties
- logd Add persist.logd.size (global), persist.logd.size.<logid> - logcat report a more flexible multiplier in -g command. Bug: 14563261 Bug: 14469172 Change-Id: Ie389caa14ad3ae3d4a3a3cc463425bb9dbc5e483
This commit is contained in:
parent
5c02b2760e
commit
671e343c7d
|
@ -281,6 +281,30 @@ static int setLogFormat(const char * formatString)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const char multipliers[][2] = {
|
||||
{ "" },
|
||||
{ "K" },
|
||||
{ "M" },
|
||||
{ "G" }
|
||||
};
|
||||
|
||||
static unsigned long value_of_size(unsigned long value)
|
||||
{
|
||||
for (unsigned i = 0;
|
||||
(i < sizeof(multipliers)/sizeof(multipliers[0])) && (value >= 1024);
|
||||
value /= 1024, ++i) ;
|
||||
return value;
|
||||
}
|
||||
|
||||
static const char *multiplier_of_size(unsigned long value)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0;
|
||||
(i < sizeof(multipliers)/sizeof(multipliers[0])) && (value >= 1024);
|
||||
value /= 1024, ++i) ;
|
||||
return multipliers[i];
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int err;
|
||||
|
@ -715,9 +739,10 @@ int main(int argc, char **argv)
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
printf("%s: ring buffer is %ldKb (%ldKb consumed), "
|
||||
printf("%s: ring buffer is %ld%sb (%ld%sb consumed), "
|
||||
"max entry is %db, max payload is %db\n", dev->device,
|
||||
size / 1024, readable / 1024,
|
||||
value_of_size(size), multiplier_of_size(size),
|
||||
value_of_size(readable), multiplier_of_size(readable),
|
||||
(int) LOGGER_ENTRY_MAX_LEN, (int) LOGGER_ENTRY_MAX_PAYLOAD);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,29 +14,68 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <cutils/properties.h>
|
||||
#include <log/logger.h>
|
||||
|
||||
#include "LogBuffer.h"
|
||||
#include "LogReader.h"
|
||||
#include "LogStatistics.h"
|
||||
#include "LogWhiteBlackList.h"
|
||||
#include "LogReader.h"
|
||||
|
||||
// Default
|
||||
#define LOG_BUFFER_SIZE (256 * 1024) // Tuned on a per-platform basis here?
|
||||
#define log_buffer_size(id) mMaxSize[id]
|
||||
|
||||
static unsigned long property_get_size(const char *key) {
|
||||
char property[PROPERTY_VALUE_MAX];
|
||||
property_get(key, property, "");
|
||||
|
||||
char *cp;
|
||||
unsigned long value = strtoul(property, &cp, 10);
|
||||
|
||||
switch(*cp) {
|
||||
case 'm':
|
||||
case 'M':
|
||||
value *= 1024;
|
||||
/* FALLTHRU */
|
||||
case 'k':
|
||||
case 'K':
|
||||
value *= 1024;
|
||||
/* FALLTHRU */
|
||||
case '\0':
|
||||
break;
|
||||
|
||||
default:
|
||||
value = 0;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
LogBuffer::LogBuffer(LastLogTimes *times)
|
||||
: mTimes(*times) {
|
||||
pthread_mutex_init(&mLogElementsLock, NULL);
|
||||
dgram_qlen_statistics = false;
|
||||
|
||||
static const char global_default[] = "persist.logd.size";
|
||||
unsigned long default_size = property_get_size(global_default);
|
||||
|
||||
log_id_for_each(i) {
|
||||
mMaxSize[i] = LOG_BUFFER_SIZE;
|
||||
setSize(i, LOG_BUFFER_SIZE);
|
||||
setSize(i, default_size);
|
||||
|
||||
char key[PROP_NAME_MAX];
|
||||
snprintf(key, sizeof(key), "%s.%s",
|
||||
global_default, android_log_id_to_name(i));
|
||||
|
||||
setSize(i, property_get_size(key));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,3 +10,16 @@ logd.statistics.dgram_qlen bool false Record dgram_qlen statistics. This
|
|||
minimum domain socket network FIFO
|
||||
size (see source for details) based
|
||||
on typical load (logcat -S to view)
|
||||
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>
|
||||
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.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.crash number 256K Size of the buffer for the crash log
|
||||
|
||||
NB:
|
||||
- number support multipliers (K or M) for convenience. Range is limited
|
||||
to between 64K and 256M for log buffer sizes. Individual logs override the
|
||||
global default.
|
||||
|
|
Loading…
Reference in New Issue