Add aaa-12 add log cmd monitor

RCA:
SOL:
修改人:zhangtao
检视人:
This commit is contained in:
zhangtaohz 2019-08-12 18:12:53 +08:00
parent be2edc4649
commit 3f1eebd1af
11 changed files with 127 additions and 71 deletions

View File

@ -11,7 +11,7 @@ typedef enum {
typedef struct _log_console {
u8 level;
log_sw_t on;
char module_name[MAX_MODULE_NAME_SZ];
char module[MAX_MODULE_NAME_SZ];
} log_console_t;
typedef log_console_t log_pty_t;

View File

@ -27,7 +27,7 @@ VPATH = ../user/logging
# set the source file, don't used .o because of ...
COMMON_SRCS = logging_main.c cmd_console.c
COMMON_SRCS = logging_main.c cmd_console.c logging_common.c cmd_monitor.c
# MRS Board Source Files
PLAT_LINUX_SRCS = $(COMMON_SRCS)

View File

@ -35,7 +35,7 @@ ret_code log_console_config_chk(uint source, uint *config_type,
s2j_struct_get_basic_element(log_console, json_obj, int, level);
s2j_struct_get_basic_element(log_console, json_obj, int, on);
S2J_STRUCT_GET_STRING_ELEMENT_N(log_console, json_obj, module_name, MAX_MODULE_NAME_SZ);
S2J_STRUCT_GET_STRING_ELEMENT_N(log_console, json_obj, module, MAX_MODULE_NAME_SZ);
*input_len = sizeof(*log_console);
memcpy(input, log_console, *input_len);

View File

@ -1,74 +1,11 @@
#include "cmd_console.h"
#include "ulog_api.h"
#include "log_types.h"
#include "configm.h"
#include "configmapi.h"
#include "logging_common.h"
#include "ulog/ulog_in.h"
#include "s2j/s2j.h"
static int __conf_console(cJSON *json_obj, const char *str_level, const log_sw_t on, const char *module_name)
{
log_console_t console = {0};
char *output;
int output_len;
int ret = -1;
u8 level;
if ((level = log_str_to_level(str_level)) < 0) {
ULOG_WARNING(g_log, "Unknown log level:%s", str_level);
return -1;
}
console.level = level;
console.on = on;
if (module_name != NULL) {
strncpy(console.module_name, module_name, sizeof(console.module_name));
}
s2j_json_set_basic_element(json_obj, &console, int, level);
s2j_json_set_basic_element(json_obj, &console, int, on);
s2j_json_set_basic_element(json_obj, &console, string, module_name);
char *json = cJSON_PrintUnformatted(json_obj);
if (json == NULL) {
ULOG_ERR(g_log, "Converting struct to json is failure");
return -1;
}
ULOG_DEBUG(g_log, "Console json is %s", json);
ret_code ret_c = web_config_exec_sync(CM_CONFIG_SET, LOG_CONFIG_CONSOLE,
json, strlen(json),
&output, &output_len);
if (ret_c != RET_OK) {
ULOG_ERR(g_log, "Console of Web config is failure:%d", ret_c);
} else {
ret = 0;
}
if (json != NULL) {
free(json);
}
return ret;
}
int conf_console(cJSON *json_obj, int argc, char **argv)
{
log_sw_t on = LOG_ON;
char *level = DEFAULT_LOG_LEVEL;
if (argc >= 3) {
if (strcasecmp(argv[2], "off") == 0) {
on = LOG_OFF;
} else {
level = argv[2];
}
}
char *module = NULL;
if (argc >= 4) {
module = argv[3];
}
return __conf_console(json_obj, level, on, module);
CMD_PARSE_AND_CONFIG_TERMINAL(log_console_t, json_obj, argc, argv, LOG_CONFIG_CONSOLE);
}

View File

@ -0,0 +1,13 @@
#include "cmd_console.h"
#include "ulog_api.h"
#include "log_types.h"
#include "logging_common.h"
#include "ulog/ulog_in.h"
#include "s2j/s2j.h"
int conf_monitor(cJSON *json_obj, int argc, char **argv)
{
CMD_PARSE_AND_CONFIG_TERMINAL(log_pty_t, json_obj, argc, argv, LOG_CONFIG_CONSOLE);
}

View File

@ -0,0 +1,10 @@
#ifndef _CMD_MONITOR_H
#define _CMD_MONITOR_H
#include "cjson/cJSON.h"
//int conf_console(cJSON *json_obj, const char *str_level, const char *module_name);
int conf_monitor(cJSON *json_obj, int argc, char **argv);
#endif

View File

@ -0,0 +1,36 @@
#include "logging_common.h"
#include "ulog_api.h"
#include "log_types.h"
#include "configm.h"
#include "configmapi.h"
#include "ulog/ulog_in.h"
int set_log_conf(cJSON *json_obj, uint64 config_id)
{
int ret = -1;
char *output;
int output_len;
char *json = cJSON_PrintUnformatted(json_obj);
if (json == NULL) {
ULOG_ERR(g_log, "Converting struct to json is failure");
return ret;
}
ULOG_DEBUG(g_log, "Setting log json is %s", json);
ret_code ret_c = web_config_exec_sync(CM_CONFIG_SET, config_id /*LOG_CONFIG_CONSOLE*/,
json, strlen(json),
&output, &output_len);
if (ret_c != RET_OK) {
ULOG_ERR(g_log, "Log of Web config is failure:%d", ret_c);
} else {
ret = 0;
}
if (json != NULL) {
free(json);
}
return ret;
}

View File

@ -1,8 +1,66 @@
#ifndef _LOGGING_COMMON_H
#define _LOGGING_COMMON_H
#include "cjson/cJSON.h"
#include "ulog_api.h"
#include "common_types.h"
#include "configm.h"
#include "configmapi.h"
#include "s2j/s2j.h"
#define DEFAULT_LOG_LEVEL "info"
extern ulog_t *g_log;
int set_log_conf(cJSON *json_obj, uint64 config_id);
#define CONF_TERMINAL(type, json_obj, str_level, on, module_name, conf_id) { \
type terminal = {0}; \
u8 level; \
\
if ((level = log_str_to_level(str_level)) < 0) { \
ULOG_WARNING(g_log, "Unknown log level:%s", str_level); \
return -1; \
} \
\
terminal.level = level; \
terminal.on = on; \
if (module_name != NULL) { \
strncpy(terminal.module, module_name, sizeof(terminal.module)); \
} \
\
s2j_json_set_basic_element(json_obj, &terminal, int, level); \
s2j_json_set_basic_element(json_obj, &terminal, int, on); \
s2j_json_set_basic_element(json_obj, &terminal, string, module); \
\
int ret = set_log_conf(json_obj, conf_id); \
if (ret != 0) { \
ULOG_ERR(g_log, "Setting configure of log is failure"); \
} \
ULOG_DEBUG(g_log, "Setting configure of log is success"); \
return ret; \
}
#define CMD_PARSE_AND_CONFIG_TERMINAL(type, json_obj, argc, argv, conf_id) { \
log_sw_t on = LOG_ON; \
char *str_level = DEFAULT_LOG_LEVEL; \
if (argc >= 3) { \
if (strcasecmp(argv[2], "off") == 0) { \
on = LOG_OFF; \
} else { \
str_level = argv[2]; \
} \
} \
\
char *module = NULL; \
if (argc >= 4) { \
module = argv[3]; \
} \
\
CONF_TERMINAL(type, json_obj, str_level, on, module, conf_id); \
}
#endif

View File

@ -1,6 +1,7 @@
#include <stdio.h>
#include "cmd_console.h"
#include "cmd_monitor.h"
#include "ulog_api.h"
#include "s2j/s2j.h"
@ -15,7 +16,8 @@ typedef struct _log_cmd {
ulog_t *g_log;
log_cmd_t log_cmd[] = {
{"console", conf_console}
{"console", conf_console},
{"monitor", conf_monitor}
};
cmd_cb get_cb_by_cmd(const char *cmd)

View File

@ -74,7 +74,7 @@ static int config_log_console(const log_console_t *conf)
}
break;
case LOG_ON:
if (log_conf(conf->level, LOG_CONF_PATH, LOG_CONF_COSOLE_FILE_NAME, conf->module_name,
if (log_conf(conf->level, LOG_CONF_PATH, LOG_CONF_COSOLE_FILE_NAME, conf->module,
write_console_content, NULL) != 0) {
ULOG_ERR(g_log, "Log's console configure which is written is failure");
ret = -1;
@ -84,7 +84,7 @@ static int config_log_console(const log_console_t *conf)
break;
}
return 0;
return ret;
}
void rpc_conf_log_console(rpc_conn *conn, pointer input, int input_len, pointer data)

View File

@ -52,7 +52,7 @@ static int write_pty_content(FILE *fp, const u8 level, const char *filter_mod, v
static int config_log_pty(const log_pty_t *conf)
{
if (log_conf(conf->level, LOG_CONF_PATH, LOG_CONF_PTY_FILE_NAME, conf->module_name,
if (log_conf(conf->level, LOG_CONF_PATH, LOG_CONF_PTY_FILE_NAME, conf->module,
write_pty_content, NULL) != 0) {
ULOG_ERR(g_log, "Log's pty configure which is written is failure");
return -1;