secgateway/Platform/user/ulog/log-sched/log_sched.c

123 lines
3.2 KiB
C
Raw Normal View History

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <semaphore.h>
#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"
#define LOG_SCHED_MODULE_NAME "log-sched"
#define SERVICE_LOG_FILE_NAME "log-file"
#define SERIVCE_LOG_CONSOLE_NAME "log-console"
#define SERVICE_LOG_PTY_NAME "log-pty"
#define SERVICE_LOG_REMOTE_NAME "log-remote"
ulog_t *g_log = NULL;
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;
}
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", 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_remote", rpc_conf_log_remote);
/*
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};
remote.op = LOG_REMOTE_OP_DEL;
strcpy(remote.host, "192.168.3.11");
remote.rfc = LOG_RFC_5424;
remote.port = 514;
rpc_conf_log_remote(NULL, &remote, sizeof(remote), 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:
ulog_close(g_log);
return 0;
}