[84929][85032][85034]fix syslog set/get log level, default file count and size

Change-Id: I56929b9b4a403c15650656fcaa8eab428e4d33bf
diff --git a/mbtk/lynq_lib/src/lynq_log.c b/mbtk/lynq_lib/src/lynq_log.c
index 670e5c9..6e3885a 100755
--- a/mbtk/lynq_lib/src/lynq_log.c
+++ b/mbtk/lynq_lib/src/lynq_log.c
@@ -39,7 +39,7 @@
     {
         value = 100;
     }
-//    value = value*1024;
+    value = value*1024;
 
     jsonobj = json_object_from_file(LOG_CONFIG_PATH);
     if (NULL == jsonobj) {
@@ -122,8 +122,8 @@
     /***释放json对象***/
     json_object_put(jsonobj);
 
-//    return tmp_int/1024;
-    return tmp_int;
+    return tmp_int/1024;
+//    return tmp_int;
 }
 
 int lynq_syslog_set_file_rotate(int value)
@@ -226,20 +226,192 @@
     return tmp_int;
 }
 
+log_level_enum filter_char_to_pri(char c)
+{
+    switch (c) {
+        case 'v':
+            return LOG_VERBOSE;
+        case 'd':
+            return LOG_DEBUG;
+        case 'i':
+            return LOG_INFO;
+        case 'w':
+            return LOG_WARNING;
+        case 'e':
+            return LOG_ERROR;
+        case '*':
+        default:
+            return LOG_LEVEL_MAX;
+    }
+}
+
+char filter_pri_to_char(log_level_enum level)
+{
+    char char_level;
+    switch (level) {
+        case LOG_VERBOSE:
+            char_level = 'v';
+            break;
+        case LOG_DEBUG:
+            char_level = 'd';
+            break;
+        case LOG_INFO:
+            char_level = 'i';
+            break;
+        case LOG_WARNING:
+            char_level = 'w';
+            break;
+        case LOG_ERROR:
+            char_level = 'e';
+            break;
+        case LOG_LEVEL_MAX:
+        default:
+            char_level = '*';
+            break;
+    }
+    return char_level;
+}
+
 int lynq_set_log_level(const char * module_name, log_level_enum level)
 {
-    UNUSED(module_name);
-    UNUSED(level);
+    json_object* jsonobj = NULL;
+    json_object* tmpjson = NULL;
+    json_object* datajson = NULL;
+    json_object* listjson = NULL;
+    json_object* fileterjson = NULL;
+    json_object* fileter_listjson = NULL;
+    json_object* new_fileter = NULL;
 
+    int n = 0, array_length = 0;
+    char* tmp_string = NULL;
+    char level_string[5] = {'\0'};
+
+    jsonobj = json_object_from_file(LOG_CONFIG_PATH);
+    if (NULL == jsonobj) {
+        printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
+        return -1;
+    }
+    /***获取data***/
+    json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
+    datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
+    if (NULL == datajson) {
+        json_object_put(jsonobj);
+        return -1;
+    }
+    
+    json_object_object_get_ex(datajson, "filter_list", &listjson);
+    if (NULL == listjson) {
+        printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
+        json_object_put(listjson);
+        return -1;
+    }
+    array_length = json_object_array_length(listjson);
+    for (n = 0; n <= array_length; n++) {
+        fileterjson = json_object_array_get_idx(listjson, n);
+        if (NULL == fileterjson) {
+            new_fileter = json_object_new_object();
+            sprintf(level_string, "%c", filter_pri_to_char(level));
+            json_object_object_add(new_fileter, "priority", json_object_new_string(level_string));
+            json_object_object_add(new_fileter, "tag", json_object_new_string(module_name));
+            json_object_array_add(listjson, new_fileter);
+            break;
+        }
+
+        json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
+        char *str = json_object_get_string(fileter_listjson);
+        if (str) {
+            tmp_string = strdup(str);
+            if(strcmp(module_name, tmp_string) == 0)
+            {
+                sprintf(level_string, "%c", filter_pri_to_char(level));
+                json_object_object_add(fileterjson, "priority", json_object_new_string(level_string));
+                json_object_to_file(LOG_CONFIG_PATH, jsonobj);
+                json_object_put(jsonobj);
+                return 0;
+            }
+        }
+        else
+        {
+            continue;
+        }
+    }
+    /***释放json对象***/
+    json_object_to_file(LOG_CONFIG_PATH, jsonobj);
+    json_object_put(jsonobj);
 
     return 0;
 }
 
 int lynq_get_log_level(const char * module_name, log_level_enum *level)
 {
-    UNUSED(module_name);
-    UNUSED(level);
+    json_object* jsonobj = NULL;
+    json_object* tmpjson = NULL;
+    json_object* datajson = NULL;
+    json_object* listjson = NULL;
+    json_object* fileterjson = NULL;
+    json_object* fileter_listjson = NULL;
 
+    int n;
+    char* tmp_string = NULL;
+
+    jsonobj = json_object_from_file(LOG_CONFIG_PATH);
+    if (NULL == jsonobj) {
+        printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
+        return -1;
+    }
+    /***获取data***/
+    json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
+    datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
+    if (NULL == datajson) {
+        json_object_put(jsonobj);
+        return -1;
+    }
+
+    json_object_object_get_ex(datajson, "filter_list", &listjson);
+    if (NULL == listjson) {
+        printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
+        json_object_put(listjson);
+        return -1;
+    }
+
+    for (n = 0 ; n < 5; n++) {
+        fileterjson = json_object_array_get_idx(listjson, n);
+        if (NULL == fileterjson) {
+            printf("the fileterjson exit\n");
+            break;
+        }
+
+        json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
+        char *str = json_object_get_string(fileter_listjson);
+        if (str) {
+            tmp_string = strdup(str);
+            printf("tag is %s\n", tmp_string);
+            if(strcmp(module_name, tmp_string) == 0)
+            {
+                json_object_object_get_ex(fileterjson, "priority", &fileter_listjson);
+                str = json_object_get_string(fileter_listjson);
+                if (str) {
+                    tmp_string = str[0];
+                    printf("fileter_listjson: %c\n", tmp_string);
+                    *level = filter_char_to_pri(tmp_string);
+                    //get the log level
+                    json_object_put(jsonobj);
+                    return 0;
+                }
+                else
+                {
+                    break;
+                }
+            }
+        }
+        else
+        {
+            continue;
+        }
+    }
+    *level = LOG_UNSET;
+    /***释放json对象***/
+    json_object_put(jsonobj);
 
     return 0;
 }