#include #include "cmd_console.h" #include "cmd_monitor.h" #include "cmd_remote.h" #include "cmd_file.h" #include "ulog_api.h" #include "s2j/s2j.h" #define LOGGING_MODULE_NAME "logging" typedef int (*cmd_cb)(cJSON *, int, char **); typedef struct _log_cmd { char cmd[20]; cmd_cb cb; } log_cmd_t; ulog_t *g_log; log_cmd_t g_log_cmd[] = { {"console", conf_console}, {"monitor", conf_monitor}, {"host", conf_remote}, {"trap", conf_remote_level}, {"file", conf_file} }; log_cmd_t *get_cb_by_cmd(const char *cmd) { for (int i = 0; i < (sizeof(g_log_cmd) / sizeof(log_cmd_t)); i++) { if (strcasecmp(cmd, g_log_cmd[i].cmd) == 0) { return &g_log_cmd[i]; } } return NULL; } static void logging_usage() { int i = 0; char tmp_str[1024] = ""; fprintf(stdout, "-----------------------------------------------------------------------------------------\n"); fprintf(stdout, "usage of %s:", LOGGING_MODULE_NAME); for (i = 0; i < (sizeof(g_log_cmd) / sizeof(log_cmd_t)); i++) { strcat(tmp_str, g_log_cmd[i].cmd); if (i < (sizeof(g_log_cmd) / sizeof(log_cmd_t))-1) { strcat(tmp_str, "|"); } } fprintf(stdout, " %s %s\n", LOGGING_MODULE_NAME, tmp_str); fprintf(stdout, "\n"); fprintf(stdout, "1. usage of %s %s:\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s [, defalut is wildcard]]\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s off\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s get [, defalut is wildcard]]\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " = emerg | alert | crit | err | warn | notice | info | debug\n"); fprintf(stdout, " the filtering module_name, only recode this module's log while set\n"); fprintf(stdout, " eg: %s %s info moudle1\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s off\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s get\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, " %s %s get module1\n", LOGGING_MODULE_NAME, g_log_cmd[0].cmd); fprintf(stdout, "\n"); fprintf(stdout, "2. usage of %s %s is simple as %s\n", LOGGING_MODULE_NAME, g_log_cmd[1].cmd, g_log_cmd[0].cmd); fprintf(stdout, "\n"); fprintf(stdout, "3. usage of %s %s:\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s add [, defalut=514] [, defalut=RFC3164fmt]\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s del [, defalut=514] [, defalut=RFC3164fmt]\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s get [, defalut is wildcard] [, defalut is wildcard]\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s getall\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " is the ip address of remote syslog server\n"); fprintf(stdout, " is the port of remote syslog server\n"); fprintf(stdout, " = RFC3164fmt|RFC5424fmt, is the version of syslog format\n"); fprintf(stdout, " eg: %s %s add 192.168.100.1 514 RFC3164fmt\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s del 192.168.100.1 514 RFC3164fmt\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s get 192.168.100.1\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, " %s %s getall\n", LOGGING_MODULE_NAME, g_log_cmd[2].cmd); fprintf(stdout, "\n"); fprintf(stdout, "4. usage of %s %s:\n", LOGGING_MODULE_NAME, g_log_cmd[3].cmd); fprintf(stdout, " %s %s \n", LOGGING_MODULE_NAME, g_log_cmd[3].cmd); fprintf(stdout, " %s %s get\n", LOGGING_MODULE_NAME, g_log_cmd[3].cmd); fprintf(stdout, " = emerg | alert | crit | err | warn | notice | info | debug \n"); fprintf(stdout, " eg: %s %s info\n", LOGGING_MODULE_NAME, g_log_cmd[3].cmd); fprintf(stdout, " %s %s get\n", LOGGING_MODULE_NAME, g_log_cmd[3].cmd); fprintf(stdout, "\n"); fprintf(stdout, "5. usage of %s %s:\n", LOGGING_MODULE_NAME, g_log_cmd[4].cmd); fprintf(stdout, " %s %s [, default=info] [, default=/var/log/syslog-test] [, default=0] [, default=180] [, default=0]\n", LOGGING_MODULE_NAME, g_log_cmd[4].cmd); fprintf(stdout, " %s %s get\n", LOGGING_MODULE_NAME, g_log_cmd[4].cmd); fprintf(stdout, " = emerg | alert | crit | err | warn | notice | info | debug\n"); fprintf(stdout, " is the path of syslog files saved\n"); fprintf(stdout, " = 0 | 1 , which 0 is syslog files is not compress while 1 is compress\n"); fprintf(stdout, " is the syslog files life-time (days)\n"); fprintf(stdout, " is the syslog files life-size (bytes), while 0 is no-check\n"); fprintf(stdout, " eg: %s %s info /var/log/syslog-files 0 100 1024000\n", LOGGING_MODULE_NAME, g_log_cmd[4].cmd); fprintf(stdout, " %s %s get\n", LOGGING_MODULE_NAME, g_log_cmd[4].cmd); fprintf(stdout, "-----------------------------------------------------------------------------------------\n"); } int main(int argc, char **argv) { int ret = -1; if (argc < 2) { fprintf(stdout, "Parameter too few\n"); logging_usage(); return ret; } if (strcmp(argv[1], "-h")==0 || strcmp(argv[1], "--help")==0) { logging_usage(); return 0; } g_log = ulog_init(LOGGING_MODULE_NAME, 1); if (g_log == NULL) { fprintf(stderr, "Initiating ulog is failure\n"); return ret; } log_cmd_t *log_cmd = get_cb_by_cmd(argv[1]); if (log_cmd == NULL) { ulog_close(g_log); ULOG_WARNING(g_log, "Not find logging cmd:%s", argv[1]); return -1; } s2j_create_json_obj(json_obj); if(json_obj == NULL) { ULOG_ERR(g_log, "Creating json object is failure"); goto END; } if (log_cmd->cb(json_obj, argc, argv) != 0) { ULOG_ERR(g_log, "Configuring %s is failure", log_cmd->cmd); goto END; } ret = 0; END: if(json_obj != NULL) { cJSON_Delete(json_obj); } ulog_close(g_log); return ret; }