From 62998b7bd9f4010c479b3f81e2bdd8ebc78f246b Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Thu, 15 Aug 2019 18:18:51 +0800 Subject: [PATCH] =?UTF-8?q?Add=20=20aaa-12=20add=20aysn=20restart=20rsyslo?= =?UTF-8?q?g=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA?= =?UTF-8?q?=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/ulog/log-sched/log_common.c | 32 ++++++++++++++++++++++ Platform/user/ulog/log-sched/log_common.h | 6 +++- Platform/user/ulog/log-sched/log_console.c | 14 ++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Platform/user/ulog/log-sched/log_common.c b/Platform/user/ulog/log-sched/log_common.c index 13497b32d..d35461863 100755 --- a/Platform/user/ulog/log-sched/log_common.c +++ b/Platform/user/ulog/log-sched/log_common.c @@ -229,4 +229,36 @@ int log_off_with_file(const char *path, const char *file_name) return ret; } +void rpc_conf_proc(rpc_conn *conn, pointer input, int input_len, int need_len, rpc_cb cb) +{ + char str_err[1024]; + + if (input_len < need_len) { + if (snprintf(str_err, sizeof(str_err), + "The input paramter of rpc log is needed length of %u, but the actual length is %u", + need_len, input_len) < 0) { + ULOG_ERR(g_log, "Setting error to string is failure"); + return; + } + ULOG_WARNING(g_log, str_err); + goto FAIL; + } + + if (cb(input, str_err, sizeof(str_err)) != 0) { + ULOG_ERR(g_log, str_err); + goto FAIL; + } + if (log_sev_restart() != 0) { + if (snprintf(str_err, sizeof(str_err), + "Restarting log service is failure") < 0) { + ULOG_ERR(g_log, "Setting error to string is failure"); + return; + } + goto FAIL; + } + rpc_return_null(conn); + return; +FAIL: + rpc_return_error(conn, RET_ERR, str_err); +} diff --git a/Platform/user/ulog/log-sched/log_common.h b/Platform/user/ulog/log-sched/log_common.h index 95d24fbd9..e8c517021 100755 --- a/Platform/user/ulog/log-sched/log_common.h +++ b/Platform/user/ulog/log-sched/log_common.h @@ -5,6 +5,7 @@ #include "ulog_api.h" #include "log_types.h" +#include "rpc_conn.h" #define LOG_CONF_PATH "/etc/rsyslog.d/" @@ -14,10 +15,13 @@ #define REDIRECT_SEPERATE " " +typedef int (*rpc_cb)(const void *arg, char *str_err, int str_len); + extern ulog_t *g_log; extern FILE *g_conf_fp; extern char g_conf_file[MAX_PATH_SZ]; + int log_conf(const u8 level, const char *conf_path, const char *conf_file, const char *filter_mod, int (*cb_content)(FILE *fp, const u8 level, const char *filter_mod, void *arg), void *arg); int log_conf_append(const u8 level, const char *conf_path, const char *conf_file, const char *filter_mod, @@ -26,6 +30,6 @@ int write_conf_content(FILE *fp, const u8 level, const char *filter_mod, void *a int write_conf_content_authorizing(FILE *fp, const u8 level, const char *filter_mod, void *arg); int log_level_to_str(const u8 level, char *str, u32 len); int log_off_with_file(const char *path, const char *file_name); - +void rpc_conf_proc(rpc_conn *conn, pointer input, int input_len, int need_len, rpc_cb cb); #endif diff --git a/Platform/user/ulog/log-sched/log_console.c b/Platform/user/ulog/log-sched/log_console.c index 05beb5067..04aeba645 100755 --- a/Platform/user/ulog/log-sched/log_console.c +++ b/Platform/user/ulog/log-sched/log_console.c @@ -78,8 +78,21 @@ static int config_log_console(const log_console_t *conf) return ret; } +static int __rpc_conf_log_console(const void *arg, char *str_err, int str_len) +{ + if (config_log_console((const log_console_t *)arg) != 0) { + strncpy(str_err, "Configuring console of log is faiure", str_len); + return -1; + } + return 0; +} + + void rpc_conf_log_console(rpc_conn *conn, pointer input, int input_len, pointer data) { + rpc_conf_proc(conn, input, input_len, sizeof(log_console_t), __rpc_conf_log_console); + +/* u32 need_len = sizeof(log_console_t); if (input_len < need_len) { ULOG_WARNING(g_log, @@ -95,5 +108,6 @@ void rpc_conf_log_console(rpc_conn *conn, pointer input, int input_len, pointer } log_sev_restart(); rpc_return_null(conn); + */ }