#include #include #include #include #include #include #include "rpc_server.h" #include "ulog_api.h" #include "log_file.h" #include "log_console.h" #include "log_pty.h" #include "log_remote.h" #include "rpc_module.h" #include "ulog_in.h" #define LOG_SCHED_MODULE_NAME "log-sched" #define DEFAULT_CONFIG_FILE "/etc/log-sched.conf" ulog_t *g_log = NULL; FILE *g_conf_fp; char g_conf_file[MAX_PATH_SZ]; static sem_t g_sem; void signal_exit() { if (sem_post(&g_sem) == -1) { ULOG_ERR(g_log, "Posting semaphore is failure:%s", strerror(errno)); } ULOG_DEBUG(g_log, "Receive shutdown signal"); } int main(int argc, char **argv) { int run_daemon = 0; char *options = "d"; int opt; while ((opt = getopt(argc, argv, options)) != -1) { switch (opt) { case 'd': run_daemon = 1; break; } } g_log = ulog_init(LOG_SCHED_MODULE_NAME, !run_daemon); if (g_log == NULL) { fprintf(stderr, "Initiating ulog is failure"); return -1; } strcpy(g_conf_file, DEFAULT_CONFIG_FILE); g_conf_fp = fopen(g_conf_file, "a+"); if (g_conf_fp == NULL) { ULOG_ERR(g_log, "Opening configure:%s is failure:%s", g_conf_file, strerror(errno)); goto END; } if (run_daemon) { if (daemon(0, 0) == -1) { ULOG_ERR(g_log, "Setting daemon running is failure:%s", strerror(errno)); goto END; } } rpc_server *server = rpc_server_create_ex(RPC_MODULE_SYSLOG_NAME); if (server == NULL) { ULOG_ERR(g_log, "start server error"); return -1; } if (sem_init(&g_sem, 0, 0) != 0) { ULOG_ERR(g_log, "Init sem is failure:%s", strerror(errno)); return -1; } signal(SIGINT, signal_exit); ULOG_INFO(g_log, "Server of log schedule is started"); /* 注册配置处理函数 */ rpc_server_regservice(server, SERVICE_LOG_FILE_NAME, "conf_log_file", rpc_conf_log_file); rpc_server_regservice(server, SERIVCE_LOG_CONSOLE_NAME, CONF_LOG_CONSOLE_FUNC, rpc_conf_log_console); rpc_server_regservice(server, SERVICE_LOG_PTY_NAME, "conf_log_pty", rpc_conf_log_pty); rpc_server_regservice(server, SERVICE_LOG_REMOTE_NAME, "conf_log_add_remote", rpc_conf_log_add_remote); rpc_server_regservice(server, SERVICE_LOG_REMOTE_NAME, "conf_log_del_remote", rpc_conf_log_del_remote); rpc_server_regservice(server, SERVICE_LOG_REMOTE_NAME, "conf_log_remote_level", rpc_conf_log_remote_level); /* log_file_t log = {0}; log.is_compress = LOG_UNCOMPRESS; //LOG_COMPRESS; log.del_over_days = 10; log.level = LOG_DEBUG; rpc_conf_log_file(NULL, &log, sizeof(log), NULL); log_console_t console = {0}; strcpy(console.module_name, "111"); console.level = LOG_DEBUG; console.on = 1; rpc_conf_log_console(NULL, &console, sizeof(console), NULL); log_pty_t tty = {0}; //strcpy(tty.module_name, "111"); tty.level = LOG_DEBUG; tty.on = 1; rpc_conf_log_pty(NULL, &tty, sizeof(tty), NULL); log_remote_host_t remote = {0}; strcpy(remote.host, "192.168.3.11"); remote.rfc = LOG_RFC_5424; remote.port = 514; rpc_conf_log_add_remote(NULL, &remote, sizeof(remote), NULL); log_remote_level_t level; level.level = 5; rpc_conf_log_remote_level(NULL, &level, sizeof(level), NULL); */ if (sem_wait(&g_sem) == -1) { ULOG_ERR(g_log, "Waitting semaphore is failure:%s", strerror(errno)); } ULOG_INFO(g_log, "%s is shutdown", LOG_SCHED_MODULE_NAME); END: if (g_conf_fp != NULL) { fclose(g_conf_fp); } ulog_close(g_log); return 0; }