summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2020-09-21 20:42:25 +0800
committeryangwei <[email protected]>2020-09-21 20:42:25 +0800
commit186571e82395893a1b9c8d84a5f713b4653401dc (patch)
tree0fd38ef6144ba298da1e682d8a2cbcc4915a2ebc
parente39e641103e19e27aa004932e5b3a4b984a7897d (diff)
UPDATE:logger2行为模式更新:
1、对于logger1的行为,默认使用snapshot文件初始化 2、对于logger2传入null或者无法访问或者错误格式的初始化profile,尝试使用null初始化,默认行为为stdout
-rw-r--r--demo/test_handle_logger.c31
-rw-r--r--src/MESA_handle_logger.c69
2 files changed, 75 insertions, 25 deletions
diff --git a/demo/test_handle_logger.c b/demo/test_handle_logger.c
index d4d6e2f..b4f9e67 100644
--- a/demo/test_handle_logger.c
+++ b/demo/test_handle_logger.c
@@ -1,9 +1,10 @@
#include "MESA_handle_logger.h"
-#include <stdio.h>
-#include <stdlib.h>
+#include <fcntl.h>
#include <pthread.h>
#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <time.h>
void *sample_handle = NULL;
@@ -12,6 +13,7 @@ void *test_handle = NULL;
#define LOG_NUM 100000
#define MAX_THREAD_NUM 65535
+int g_mode = 0;
int g_log_num = 0;
int g_thread_num = 0;
const char *g_zlog_conf = NULL;
@@ -80,7 +82,10 @@ void sig_int_handler(int sig)
MESA_destroy_runtime_log_handle(test_handle);
sample_handle = NULL;
test_handle = NULL;
- MESA_handle_runtime_log_destruction();
+ if (g_mode == 2)
+ {
+ MESA_handle_runtime_log_destruction();
+ }
printf("%d thread write %d log using %ld us, avg speed %f /s, %ld -> %ld\n", g_thread_num, g_thread_num * g_log_num, g_end_time - g_start_time, ((float)(g_thread_num * g_log_num) / (float)(g_end_time - g_start_time)) * 1000000, g_start_time, g_end_time);
exit(0);
}
@@ -96,24 +101,28 @@ int main(int argc, char ** args)
pthread_t t[MAX_THREAD_NUM];
int i = 0;
- if(argc != 4)
+ if (argc != 5)
{
- printf("Usage: ./($app) $zlog_conf_path $thread_num $log_num \n");
+ printf("Usage: ./($app) $mode[1 or 2] $zlog_conf_path $thread_num $log_num \n");
return -1;
}
- g_zlog_conf = args[1];
- g_thread_num = atoi(args[2]);
- g_log_num = atoi(args[3]);
+ g_mode = atoi(args[1]);
+ g_zlog_conf = args[2];
+ g_thread_num = atoi(args[3]);
+ g_log_num = atoi(args[4]);
if(g_thread_num <= 0 || g_log_num <= 0)
{
printf("Error, wrong parameter!\n");
return -1;
}
- if(0 != MESA_handle_runtime_log_creation(g_zlog_conf))
+ if (g_mode == 2)
{
- printf("MESA_handle_runtime_log_creation return error\n");
- return -1;
+ if (0 != MESA_handle_runtime_log_creation(g_zlog_conf))
+ {
+ printf("MESA_handle_runtime_log_creation return error\n");
+ return -1;
+ }
}
sample_handle = MESA_create_runtime_log_handle("./log/sample_log", RLOG_LV_DEBUG);
if (sample_handle == NULL)
diff --git a/src/MESA_handle_logger.c b/src/MESA_handle_logger.c
index c630867..55cd1cf 100644
--- a/src/MESA_handle_logger.c
+++ b/src/MESA_handle_logger.c
@@ -9,6 +9,7 @@
#include <time.h>
#define MAX_HANDLE_LOG_PATH 4096
+static int g_zlog_inited = 0;
static int g_zlog_conf_fp = -1;
static char global_conf_filepath[MAX_HANDLE_LOG_PATH] = "";
static char tmp_conf_filepath[MAX_HANDLE_LOG_PATH] = "";
@@ -128,7 +129,7 @@ static const char *loglevel_to_name(int level)
static void snapshot_handle_info(const char *handle_name, const char *log_path, int level)
{
char zlog_rule_conf_content[MAX_HANDLE_LOG_PATH + 1] = "";
- static char *zlog_conf_init_buff = "[global]\ndefault format = \"%%d(%%c), %%V, %F, %U, %%m%%n\" \n[levels]\nDEBUG=10\nINFO=20\nFATAL=30\n[rules]";
+ static char *zlog_conf_init_buff = "[global]\ndefault format = \"%d(%c), %V, %F, %U, %m%n\" \n[levels]\nDEBUG=10\nINFO=20\nFATAL=30\n[rules]";
if (g_zlog_conf_fp == -1)
{
char temp_filename[1024] = "";
@@ -150,6 +151,13 @@ static void snapshot_handle_info(const char *handle_name, const char *log_path,
handle_name, loglevel_to_name(level), log_path);
write(g_zlog_conf_fp, zlog_rule_conf_content, strlen(zlog_rule_conf_content));
fsync(g_zlog_conf_fp);
+
+ if(g_zlog_inited == 0)
+ {
+ printf("[snapshot_handle_info], Nobody call MESA_handle_runtime_log_creation before, Using (%s) to init zlog!!!\n", tmp_conf_filepath);
+ zlog_init(tmp_conf_filepath);
+ zlog_reload(NULL);
+ }
return;
}
@@ -182,7 +190,7 @@ void *MESA_create_runtime_log_handle(const char *file_path, int level)
zc = zlog_get_category(p_name);
if (!zc)
{
- printf("MESA_create_runtime_log_handle, get zlog category %s in global_conf_filepath[%s] fail\n", p_name, global_conf_filepath);
+ printf("[MESA_create_runtime_log_handle], get zlog category (%s) in global_conf_filepath(%s) fail\n", p_name, global_conf_filepath);
}
p_handle = (log_handle_t *)calloc(sizeof(log_handle_t), 1);
strncpy(p_handle->runtime_log_file, file_path, sizeof(p_handle->runtime_log_file) - 1);
@@ -222,23 +230,56 @@ void MESA_handle_runtime_log(void *handle, int level, const char *module, const
int MESA_handle_runtime_log_creation(const char *conf_path)
{
- if(conf_path == NULL)
+ char *env = getenv("ZLOG_CONF_PATH");
+ int rc = 0;
+ if (conf_path == NULL || (access(conf_path, R_OK) != 0))
{
- printf("MESA_handle_runtime_log_creation USING [NULL], will using ZLOG_CONF_PATH or STDOUT as default profile\n");
- return zlog_init(NULL);
- }
-
- int rc = zlog_init(conf_path);
- if (rc)
- {
- printf("MESA_handle_runtime_log_creation init zlog by %s failed \n", conf_path);
- return -1;
+ printf("[MESA_handle_runtime_log_creation], PATH (%s) unable to access, will output log to STDOUT or Using ZLOG_CONF_PATH (%s) !\n", conf_path, env);
+ rc = zlog_init(NULL);
+ if (rc)
+ {
+ printf("[MESA_handle_runtime_log_creation], INIT zlog by (NULL) or (%s) failed !!! \n", env);
+ return -1;
+ }
+ else
+ {
+ if (env != NULL)
+ {
+ strcpy(global_conf_filepath, env);
+ }
+ }
}
else
{
- strcpy(global_conf_filepath, conf_path);
- zlog_profile();
+ rc = zlog_init(conf_path);
+ if (rc)
+ {
+ printf("[MESA_handle_runtime_log_creation], INIT zlog by (%s) failed , using [NULL] retry !\n", conf_path);
+ rc = zlog_init(NULL);
+ if (rc)
+ {
+ printf("[MESA_handle_runtime_log_creation], INIT zlog by (NULL) or (%s) failed \n", env);
+ return -1;
+ }
+ else
+ {
+ if(env != NULL)
+ {
+ strcpy(global_conf_filepath, env);
+ }
+ }
+
+ }
+ else
+ {
+ strcpy(global_conf_filepath, conf_path);
+ }
+
}
+ printf("[MESA_handle_runtime_log_creation], INIT zlog finish, Using (%s). \n", global_conf_filepath);
+ g_zlog_inited = 1;
+ zlog_profile();
+
return rc;
}