add log4cplus
This commit is contained in:
98
mms/main.c
98
mms/main.c
@@ -16,7 +16,9 @@
|
||||
#include "node.h"
|
||||
|
||||
/*lnk10-10 */
|
||||
#include "../include/rocketmq/SimpleProducer.h"
|
||||
#include "../rocketmq/SimpleProducer.h"
|
||||
|
||||
#include "../log4cplus/log4.h"//lnk添加log4
|
||||
|
||||
#include "../cfg_parse/custom_printf.h"//lnk20250225
|
||||
|
||||
@@ -27,7 +29,7 @@ extern pt61850app_t *g_pt61850app;
|
||||
extern node_t *g_node;
|
||||
char g_my_conf_fname[256];
|
||||
|
||||
char g_onlyIP[255]; //ֱ<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char g_onlyIP[255]; //直连某个IP,仅仅为方便测试
|
||||
|
||||
apr_pool_t *g_root_pool;
|
||||
apr_pool_t *g_rdb_pool;
|
||||
@@ -58,34 +60,34 @@ int three_secs_enabled = 0;
|
||||
int auto_register_report_enabled = 0;
|
||||
int g_front_seg_index = 0;
|
||||
int g_front_seg_num = 0;
|
||||
int FRONT_MP_NUM = 0;//<EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int g_front_num_count = 0;//<EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>
|
||||
int FRONT_MP_NUM = 0;//终端连接数量
|
||||
int g_front_num_count = 0;//终端连接数量过低次数
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD>б<EFBFBD>ȫ<EFBFBD>ֹ<EFBFBD><EFBFBD>ܵ<EFBFBD>Ͷ<EFBFBD>ˣ<EFBFBD><EFBFBD>趨<EFBFBD>ĸ<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨
|
||||
//根据配置子目录判别全局功能的投退,设定四个分功能性能均衡程序的功能运行划分设定
|
||||
void init_global_function_enable()
|
||||
{
|
||||
if (strcmp(subdir,"cfg_stat_data")==0) { //<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>̬
|
||||
if (strcmp(subdir,"cfg_stat_data")==0) { //历史稳态
|
||||
g_node_id = STAT_DATA_BASE_NODE_ID;
|
||||
auto_register_report_enabled = 1;
|
||||
}else if (strcmp(subdir,"cfg_3s_data")==0) { //ʵʱ
|
||||
}else if (strcmp(subdir,"cfg_3s_data")==0) { //实时
|
||||
g_node_id = THREE_SECS_DATA_BASE_NODE_ID;
|
||||
three_secs_enabled = 1;
|
||||
}else if (strcmp(subdir,"cfg_soe_comtrade")==0) { //<EFBFBD>澯<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬
|
||||
}else if (strcmp(subdir,"cfg_soe_comtrade")==0) { //告警和录波和暂态
|
||||
g_node_id = SOE_COMTRADE_BASE_NODE_ID;
|
||||
}else if (strcmp(subdir,"cfg_his_data")==0) { //<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||
}else if (strcmp(subdir,"cfg_his_data")==0) { //不使用
|
||||
g_node_id = RECALL_ALL_DATA_BASE_NODE_ID;
|
||||
g_node_id = HIS_DATA_BASE_NODE_ID;
|
||||
}
|
||||
else if (strcmp(subdir, "cfg_newhis_data") == 0) { //<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||
else if (strcmp(subdir, "cfg_newhis_data") == 0) { //不使用
|
||||
g_node_id = RECALL_ALL_DATA_BASE_NODE_ID;
|
||||
g_node_id = NEW_HIS_DATA_BASE_NODE_ID;
|
||||
}
|
||||
else if (strcmp(subdir, "cfg_recallhis_data") == 0) { //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else if (strcmp(subdir, "cfg_recallhis_data") == 0) { //补招
|
||||
g_node_id = RECALL_HIS_DATA_BASE_NODE_ID;
|
||||
}
|
||||
else if (strcmp(subdir, "cfg_recallall_data") == 0) { //<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||
else if (strcmp(subdir, "cfg_recallall_data") == 0) { //不使用
|
||||
g_node_id = RECALL_ALL_DATA_BASE_NODE_ID;
|
||||
}
|
||||
}
|
||||
@@ -98,21 +100,21 @@ void init_daemon(void)
|
||||
int i;
|
||||
|
||||
if( pid = fork() )
|
||||
exit(0); /** <EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
exit(0); /** 是父进程,结束父进程 */
|
||||
else if( pid < 0 )
|
||||
exit(1); /** forkʧ<EFBFBD>ܣ<EFBFBD><EFBFBD>˳<EFBFBD> */
|
||||
exit(1); /** fork失败,退出 */
|
||||
|
||||
/** <EFBFBD>ǵ<EFBFBD>һ<EFBFBD>ӽ<EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> */
|
||||
/** 是第一子进程,后台继续执行 */
|
||||
|
||||
setsid(); /** <EFBFBD><EFBFBD>һ<EFBFBD>ӽ<EFBFBD><EFBFBD>̳<EFBFBD>Ϊ<EFBFBD>µĻỰ<EFBFBD>鳤<EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鳤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն˷<EFBFBD><EFBFBD><EFBFBD> */
|
||||
setsid(); /** 第一子进程成为新的会话组长和进程组长并与控制终端分离 */
|
||||
|
||||
if( pid = fork() )
|
||||
exit(0); /** <EFBFBD>ǵ<EFBFBD>һ<EFBFBD>ӽ<EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD> */
|
||||
exit(0); /** 是第一子进程,结束第一子进程 */
|
||||
else if( pid < 0)
|
||||
exit(1); /** forkʧ<EFBFBD>ܣ<EFBFBD><EFBFBD>˳<EFBFBD> */
|
||||
exit(1); /** fork失败,退出 */
|
||||
|
||||
chdir("/FeProject/bin/"); //multi process running at same time
|
||||
umask(0); /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
umask(0); /** 重设文件创建掩码 */
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -132,12 +134,12 @@ int prepare_entironment_2()
|
||||
apr_status_t rv;
|
||||
|
||||
/* apr library need call this first. */
|
||||
apr_initialize(); //APACHE<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
apr_initialize(); //APACHE初始化
|
||||
atexit(apr_terminate);
|
||||
|
||||
|
||||
/* Create node root pool */
|
||||
rv = apr_pool_create(&g_root_pool, NULL); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
rv = apr_pool_create(&g_root_pool, NULL); //分配根内存
|
||||
if(rv != APR_SUCCESS) {
|
||||
fprintf(stderr,"%s","Create node root pool failed!\n");
|
||||
return (-1);
|
||||
@@ -165,13 +167,13 @@ int prepare_entironment_2()
|
||||
}
|
||||
echo_msg("==============================================================\n");
|
||||
|
||||
rv = apr_pool_create(&g_rdb_pool, g_root_pool); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RDB<EFBFBD>ڴ<EFBFBD>
|
||||
rv = apr_pool_create(&g_rdb_pool, g_root_pool); //分配RDB内存
|
||||
if(rv != APR_SUCCESS) {
|
||||
echo_errg("Create system runtime pool failed!\n");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
rv = apr_pool_create(&g_cfg_pool, g_root_pool); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
rv = apr_pool_create(&g_cfg_pool, g_root_pool); //分配配置内存
|
||||
if(rv != APR_SUCCESS) {
|
||||
echo_errg("Create system config pool failed!\n");
|
||||
return (-1);
|
||||
@@ -211,6 +213,8 @@ int main(int argc, const char **argv)
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
getVersion(argc,argv);
|
||||
|
||||
rv=parse_param(argc, argv);
|
||||
@@ -218,6 +222,13 @@ int main(int argc, const char **argv)
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
//lnk启动进程日志
|
||||
init_logger_process();
|
||||
char buf[256];
|
||||
sprintf(buf, "前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
||||
log_debug("process", buf);
|
||||
|
||||
#ifdef _OS_UNIX_
|
||||
#ifdef QT_NO_DEBUG
|
||||
if (!g_need_password)
|
||||
@@ -250,23 +261,26 @@ int main(int argc, const char **argv)
|
||||
rv = init_rdb();
|
||||
if (rv!=APR_SUCCESS){
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
|
||||
//初始化终端和监测点日志
|
||||
init_loggers();
|
||||
|
||||
rv = run_protocol();
|
||||
if (rv!=APR_SUCCESS){
|
||||
return rv;
|
||||
}
|
||||
|
||||
//<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־,<2C><>ֹ<EFBFBD><D6B9>δ<CEB4><D7BC><EFBFBD><EFBFBD>ȫ<EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
|
||||
//初始化完成标志,防止还未准备完全就接收消息处理导致崩溃
|
||||
INITFLAG = 1;
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//调试用
|
||||
printf("INITFLAG=%d\n",INITFLAG);
|
||||
|
||||
if (1 == G_TEST_FLAG) {
|
||||
//lnk<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mqģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ֻ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
||||
//lnk添加mq模拟测试,这个只能放在主线程
|
||||
printf("try_start_mqtest_thread \n");
|
||||
int ret = try_start_mqtest_thread(0,NULL);
|
||||
// <EFBFBD>ȴ<EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD>˳<EFBFBD>
|
||||
// 等待线程退出
|
||||
echo_warn1("%-60s","System shutdown now......");
|
||||
apr_pool_destroy(g_root_pool);
|
||||
echo_msg("OK\n");
|
||||
@@ -276,16 +290,16 @@ int main(int argc, const char **argv)
|
||||
while(1) {
|
||||
/* sleep 1s, just like 1s timer */
|
||||
apr_sleep(apr_time_from_sec(1));
|
||||
/* ÿ30<EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>״̬ */
|
||||
/* 每30秒钟检查一次状态 */
|
||||
|
||||
if( !(stimer++ % 60) ) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (g_dead_lock_counter++ >=3) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if( !(stimer++ % 60) ) {//分钟
|
||||
if (g_dead_lock_counter++ >=3) {//三分钟
|
||||
g_thread_blocked_times++;
|
||||
g_dead_lock_counter = 0;
|
||||
}
|
||||
MVL_LOG_ACSE1 ("MYLOG: current g_thread_blocked_times = %u ", g_thread_blocked_times);
|
||||
|
||||
if (FRONT_MP_NUM <= 1) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (FRONT_MP_NUM <= 1) {//监测点数
|
||||
g_front_num_count++;
|
||||
}
|
||||
else {
|
||||
@@ -293,16 +307,16 @@ int main(int argc, const char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
//work<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3*13<31><33><EFBFBD>ӣ<EFBFBD><D3A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
|
||||
//work线程死了3*13分钟,退出进程
|
||||
if (g_thread_blocked_times>=13) {
|
||||
MVL_LOG_ACSE0 ("MYLOG: g_thread_blocked_times>=3, so exit to restart ");
|
||||
apr_sleep(apr_time_from_sec(10));
|
||||
exit(-1039);
|
||||
}
|
||||
|
||||
//lnk20241211 <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//lnk20241211 添加测试开关
|
||||
pthread_mutex_lock(&mtx);
|
||||
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30分钟连接数量过低且不是单连且台账大于十个终端
|
||||
MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart ");
|
||||
|
||||
apr_sleep(apr_time_from_sec(10));
|
||||
@@ -403,19 +417,19 @@ int parse_param(int argc, const char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD>̵ļ<EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD>lnk20250304
|
||||
///////////////////////////////////////////////////////////////添加测试进程的监控函数lnk20250304
|
||||
void doMonitorTaskmain(void) {
|
||||
static int stimer = 0;
|
||||
stimer++;
|
||||
|
||||
if( !(stimer++ % 60) ) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (g_dead_lock_counter++ >=3) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if( !(stimer++ % 60) ) {//分钟
|
||||
if (g_dead_lock_counter++ >=3) {//三分钟
|
||||
g_thread_blocked_times++;
|
||||
g_dead_lock_counter = 0;
|
||||
}
|
||||
MVL_LOG_ACSE1 ("MYLOG: current g_thread_blocked_times = %u ", g_thread_blocked_times);
|
||||
|
||||
if (FRONT_MP_NUM <= 1) {//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (FRONT_MP_NUM <= 1) {//监测点数
|
||||
g_front_num_count++;
|
||||
}
|
||||
else {
|
||||
@@ -423,16 +437,16 @@ void doMonitorTaskmain(void) {
|
||||
}
|
||||
}
|
||||
|
||||
//work<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3*13<31><33><EFBFBD>ӣ<EFBFBD><D3A3>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
|
||||
//work线程死了3*13分钟,退出进程
|
||||
if (g_thread_blocked_times>=13) {
|
||||
MVL_LOG_ACSE0 ("MYLOG: g_thread_blocked_times>=3, so exit to restart ");
|
||||
apr_sleep(apr_time_from_sec(10));
|
||||
exit(-1039);
|
||||
}
|
||||
|
||||
//lnk20241211 <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//lnk20241211 添加测试开关
|
||||
pthread_mutex_lock(&mtx);
|
||||
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
if (!G_TEST_FLAG && g_front_num_count >= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30分钟连接数量过低且不是单连且台账大于十个终端
|
||||
MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart ");
|
||||
|
||||
apr_sleep(apr_time_from_sec(10));
|
||||
|
||||
Reference in New Issue
Block a user