mirror of
https://github.com/emqx/neuron.git
synced 2026-10-28 14:07:20 +08:00
Merge pull request #878 from lixiumei123/main
fix(log/level api):fix the log level of nodes and neuron at the same …
This commit is contained in:
@@ -149,10 +149,21 @@ void handle_log_level(nng_aio *aio)
|
||||
neu_reqresp_head_t header = { 0 };
|
||||
neu_req_update_log_level_t cmd = { 0 };
|
||||
zlog_category_t * ct = zlog_get_category(node_name);
|
||||
zlog_category_t * neuron = zlog_get_category("neuron");
|
||||
|
||||
ret = zlog_level_switch(ct, ZLOG_LEVEL_DEBUG);
|
||||
if (ret != 0) {
|
||||
nlog_error("Modify log level fail, ret: %d", ret);
|
||||
nlog_error(
|
||||
"Modify node log level fail, node_name:%s, ret: %d,",
|
||||
node_name, ret);
|
||||
NEU_JSON_RESPONSE_ERROR(NEU_ERR_EINTERNAL, {
|
||||
http_response(aio, error_code.error, result_error);
|
||||
});
|
||||
}
|
||||
|
||||
ret = zlog_level_switch(neuron, ZLOG_LEVEL_DEBUG);
|
||||
if (ret != 0) {
|
||||
nlog_error("Modify neuron log level fail, ret: %d", ret);
|
||||
NEU_JSON_RESPONSE_ERROR(NEU_ERR_EINTERNAL, {
|
||||
http_response(aio, error_code.error, result_error);
|
||||
});
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
**/
|
||||
#include <stdlib.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <nng/nng.h>
|
||||
@@ -47,6 +48,7 @@
|
||||
static const char *const url = "inproc://neu_manager";
|
||||
|
||||
static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data);
|
||||
static int manager_level_check(void *usr_data);
|
||||
inline static void reply(neu_manager_t *manager, neu_reqresp_head_t *header,
|
||||
void *data);
|
||||
inline static void forward_msg_dup(neu_manager_t *manager, nng_msg *msg,
|
||||
@@ -72,6 +74,12 @@ neu_manager_t *neu_manager_create()
|
||||
.cb = report_nodes_state,
|
||||
};
|
||||
|
||||
neu_event_timer_param_t timer_level = {
|
||||
.second = 60,
|
||||
.millisecond = 0,
|
||||
.cb = manager_level_check,
|
||||
};
|
||||
|
||||
manager->events = neu_event_new();
|
||||
manager->plugin_manager = neu_plugin_manager_create();
|
||||
manager->node_manager = neu_node_manager_create();
|
||||
@@ -89,6 +97,8 @@ neu_manager_t *neu_manager_create()
|
||||
nng_socket_get_int(manager->socket, NNG_OPT_RECVFD, ¶m.fd);
|
||||
manager->loop = neu_event_add_io(manager->events, param);
|
||||
|
||||
manager->timestamp_lev_manager = 0;
|
||||
|
||||
neu_metrics_init();
|
||||
start_static_adapter(manager, DEFAULT_DASHBOARD_PLUGIN_NAME);
|
||||
start_static_adapter(manager, DEFAULT_MONITOR_PLUGIN_NAME);
|
||||
@@ -114,6 +124,9 @@ neu_manager_t *neu_manager_create()
|
||||
|
||||
manager_load_subscribe(manager);
|
||||
|
||||
timer_level.usr_data = (void *) manager;
|
||||
manager->timer_lev = neu_event_add_timer(manager->events, timer_level);
|
||||
|
||||
timer_param.usr_data = (void *) manager;
|
||||
manager->timer = neu_event_add_timer(manager->events, timer_param);
|
||||
|
||||
@@ -128,6 +141,7 @@ void neu_manager_destroy(neu_manager_t *manager)
|
||||
UT_array *pipes = neu_node_manager_get_pipes_all(manager->node_manager);
|
||||
|
||||
neu_event_del_timer(manager->events, manager->timer);
|
||||
neu_event_del_timer(manager->events, manager->timer_lev);
|
||||
strcpy(header.sender, "manager");
|
||||
utarray_foreach(pipes, nng_pipe *, pipe)
|
||||
{
|
||||
@@ -166,6 +180,29 @@ const char *neu_manager_get_url()
|
||||
return url;
|
||||
}
|
||||
|
||||
static int manager_level_check(void *usr_data)
|
||||
{
|
||||
neu_manager_t *manager = (neu_manager_t *) usr_data;
|
||||
|
||||
if (0 != manager->timestamp_lev_manager) {
|
||||
struct timeval tv = { 0 };
|
||||
int64_t diff = { 0 };
|
||||
int64_t delay_s = 60;
|
||||
zlog_category_t *neuron = zlog_get_category("neuron");
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
diff = tv.tv_sec - manager->timestamp_lev_manager;
|
||||
if (delay_s <= diff) {
|
||||
int ret = zlog_level_switch(neuron, ZLOG_LEVEL_INFO);
|
||||
if (0 != ret) {
|
||||
nlog_error("Modify default log level fail, ret:%d", ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
{
|
||||
neu_manager_t * manager = (neu_manager_t *) usr_data;
|
||||
@@ -571,6 +608,10 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
neu_msg_exchange(header);
|
||||
reply(manager, header, &e);
|
||||
} else {
|
||||
struct timeval tv = { 0 };
|
||||
gettimeofday(&tv, NULL);
|
||||
manager->timestamp_lev_manager = tv.tv_sec;
|
||||
|
||||
forward_msg(manager, msg, header->receiver);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ typedef struct neu_manager {
|
||||
neu_node_manager_t * node_manager;
|
||||
neu_subscribe_mgr_t * subscribe_manager;
|
||||
neu_sub_msg_mgr_t * sub_msg_manager;
|
||||
|
||||
neu_event_timer_t *timer_lev;
|
||||
int64_t timestamp_lev_manager;
|
||||
} neu_manager_t;
|
||||
|
||||
int neu_manager_add_plugin(neu_manager_t *manager, const char *library);
|
||||
|
||||
Reference in New Issue
Block a user