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: