yocto: add format/exclusive tag for fakelogcat [1/1]
PD#SWPL-145690
Problem:
need more format for logcat
Solution:
add format/exclusive tag for fakelogcat
Verify:
Local
Signed-off-by: yanmei.yang <yanmei.yang@amlogic.com>
Change-Id: I6618dbc8417cffcf3232edeee6f9066cb1e24b2f
diff --git a/liblog/fake_log_device.c b/liblog/fake_log_device.c
index 850fd07..de32a7a 100644
--- a/liblog/fake_log_device.c
+++ b/liblog/fake_log_device.c
@@ -96,10 +96,10 @@
char keepFile;
char format[16];
char logPath[64];
+ char excludeTag[512];
}FakeLogEnv;
-static FakeLogEnv logEnv = {0, 1048576, 0, 0, -1, 0, 0, "time", "/data"};
-
+static FakeLogEnv logEnv = {0, 1048576, 0, 0, -1, 0, 0, "time", "/data", ""};
#ifdef HAVE_PTHREADS
/*
@@ -299,17 +299,19 @@
else if (strcmp(fstr, "process") == 0)
format = FORMAT_PROCESS;
else if (strcmp(fstr, "tag") == 0)
- format = FORMAT_PROCESS;
+ format = FORMAT_TAG;
else if (strcmp(fstr, "thread") == 0)
- format = FORMAT_PROCESS;
+ format = FORMAT_THREAD;
else if (strcmp(fstr, "raw") == 0)
- format = FORMAT_PROCESS;
+ format = FORMAT_RAW;
else if (strcmp(fstr, "time") == 0)
format = FORMAT_TIME;
+ else if (strcmp(fstr, "threadtime") == 0)
+ format = FORMAT_THREADTIME;
else if (strcmp(fstr, "long") == 0)
- format = FORMAT_PROCESS;
+ format = FORMAT_LONG;
else
- format = (LogFormat) atoi(fstr); // really?!
+ format = FORMAT_OFF; // really?!
}
fprintf(stderr, "liglog: format: %d\n", format);
@@ -406,13 +408,14 @@
FILE *fp;
char *buf = 0;
size_t readLen = 0;
- const char *deviceInfo = "/etc/logcat.conf";
+ const char *deviceInfo = "/data/logcat.conf";
char *p;
int stdoutini = 0;
int formatini = 0;
int pathini = 0;
int sizeini = 0;
int keepfileini = 0;
+ int excludetagini = 0;
/*
STDOUT=false
LOG_FORMAT=time
@@ -508,6 +511,14 @@
continue;
}
}
+ if (!excludetagini) {
+ p = getKeyValue(buf, "LOG_EXCLUDETAG");
+ if (p) {
+ strcpy(logEnv.excludeTag, p);
+ excludetagini = 1;
+ continue;
+ }
+ }
}
}
@@ -518,6 +529,16 @@
logEnv.initFlag = 1;
}
+unsigned char checkTag(const char *tag) {
+ char *p;
+ if (strlen(logEnv.excludeTag) == 0)
+ return 0;
+ p = strstr(logEnv.excludeTag, tag);
+ if (p != NULL) return 1;
+
+ return 0;
+}
+
/*
* Write a filtered log message to stderr.
*
@@ -540,6 +561,7 @@
pid_t pid, tid;
TRACE("LOG %d: %s %s", logPrio, tag, msg);
+ if (checkTag(tag)) return;
priChar = getPriorityString(logPrio)[0];
when = time(NULL);
@@ -592,18 +614,18 @@
break;
case FORMAT_TIME:
prefixLen = snprintf(prefixBuf, sizeof(prefixBuf),
- "%s.%03ld %-8s\t", timeBuf, curtime.tv_usec/1000, tag);
+ "%s.%03ld %c/%-8s(%5d)\t", timeBuf, curtime.tv_usec/1000, priChar, tag, pid);
strcpy(suffixBuf, "\n"); suffixLen = 1;
break;
case FORMAT_THREADTIME:
prefixLen = snprintf(prefixBuf, sizeof(prefixBuf),
- "%s %5d %5d %c %-8s \n\t", timeBuf, pid, tid, priChar, tag);
+ "%s.%03ld %5d %5d %c %-8s \t", timeBuf, curtime.tv_usec/1000, pid, tid, priChar, tag);
strcpy(suffixBuf, "\n"); suffixLen = 1;
break;
case FORMAT_LONG:
prefixLen = snprintf(prefixBuf, sizeof(prefixBuf),
- "[ %s %5d:%p %c/%-8s ]\n",
- timeBuf, pid, (void*)tid, priChar, tag);
+ "[ %s.%03ld %5d:%p %c/%-8s ]\n",
+ timeBuf, curtime.tv_usec/1000, pid, (void*)tid, priChar, tag);
strcpy(suffixBuf, "\n\n"); suffixLen = 2;
break;
default: