slow log config and schedule
parent
fc5480214a
commit
a05e343e9b
|
|
@ -188,6 +188,35 @@ int sf_load_log_config(IniFullContext *ini_ctx, LogContext *log_ctx,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sf_load_slow_log_config_ex(IniFullContext *ini_ctx, LogContext *log_ctx,
|
||||||
|
SFSlowLogConfig *slow_log_cfg)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
char *filename_prefix;
|
||||||
|
|
||||||
|
if ((result=sf_load_log_config(ini_ctx, log_ctx,
|
||||||
|
&slow_log_cfg->log_cfg)) != 0)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
slow_log_cfg->enabled = iniGetBoolValue(ini_ctx->section_name,
|
||||||
|
"enabled", ini_ctx->context, false);
|
||||||
|
slow_log_cfg->log_slower_than_ms = iniGetIntValue(ini_ctx->section_name,
|
||||||
|
"log_slower_than_ms", ini_ctx->context, 100);
|
||||||
|
filename_prefix = iniGetStrValue(ini_ctx->section_name,
|
||||||
|
"filename_prefix", ini_ctx->context);
|
||||||
|
if (filename_prefix == NULL || *filename_prefix == '\0') {
|
||||||
|
strcpy(slow_log_cfg->filename_prefix, "slow");
|
||||||
|
} else {
|
||||||
|
snprintf(slow_log_cfg->filename_prefix,
|
||||||
|
sizeof(slow_log_cfg->filename_prefix),
|
||||||
|
"%s", filename_prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int sf_load_global_config_ex(const char *server_name,
|
int sf_load_global_config_ex(const char *server_name,
|
||||||
IniFullContext *ini_ctx, const bool load_network_params,
|
IniFullContext *ini_ctx, const bool load_network_params,
|
||||||
const int task_buffer_extra_size)
|
const int task_buffer_extra_size)
|
||||||
|
|
@ -437,14 +466,16 @@ void sf_context_config_to_string(const SFContext *sf_context,
|
||||||
sf_context->accept_threads, sf_context->work_threads);
|
sf_context->accept_threads, sf_context->work_threads);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sf_log_config_to_string(SFLogConfig *log_cfg,
|
void sf_log_config_to_string_ex(SFLogConfig *log_cfg, const char *caption,
|
||||||
const char *caption, char *output, const int size)
|
const char *other_config, char *output, const int size)
|
||||||
{
|
{
|
||||||
snprintf(output, size,
|
snprintf(output, size,
|
||||||
"%s: {sync_log_buff_interval=%d, rotate_everyday=%d, "
|
"%s: {%s%ssync_log_buff_interval=%d, rotate_everyday=%d, "
|
||||||
"rotate_time=%02d:%02d, rotate_on_size=%"PRId64", "
|
"rotate_time=%02d:%02d, rotate_on_size=%"PRId64", "
|
||||||
"compress_old=%d, compress_days_before=%d, keep_days=%d, "
|
"compress_old=%d, compress_days_before=%d, keep_days=%d, "
|
||||||
"delete_old_time=%02d:%02d}", caption,
|
"delete_old_time=%02d:%02d}", caption,
|
||||||
|
other_config != NULL ? other_config : "",
|
||||||
|
other_config != NULL ? ", " : "",
|
||||||
log_cfg->sync_log_buff_interval, log_cfg->rotate_everyday,
|
log_cfg->sync_log_buff_interval, log_cfg->rotate_everyday,
|
||||||
log_cfg->rotate_time.hour, log_cfg->rotate_time.minute,
|
log_cfg->rotate_time.hour, log_cfg->rotate_time.minute,
|
||||||
log_cfg->rotate_on_size, log_cfg->compress_old,
|
log_cfg->rotate_on_size, log_cfg->compress_old,
|
||||||
|
|
@ -452,6 +483,29 @@ void sf_log_config_to_string(SFLogConfig *log_cfg,
|
||||||
log_cfg->delete_old_time.hour, log_cfg->delete_old_time.minute);
|
log_cfg->delete_old_time.hour, log_cfg->delete_old_time.minute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sf_slow_log_config_to_string(SFSlowLogConfig *slow_log_cfg,
|
||||||
|
const char *caption, char *output, const int size)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char slow_log_buff[256];
|
||||||
|
|
||||||
|
len = snprintf(slow_log_buff, sizeof(slow_log_buff),
|
||||||
|
"enabled=%d", slow_log_cfg->enabled);
|
||||||
|
if (!slow_log_cfg->enabled) {
|
||||||
|
snprintf(output, size, "%s: {%s}",
|
||||||
|
caption, slow_log_buff);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(slow_log_buff + len, sizeof(slow_log_buff) - len,
|
||||||
|
", filename_prefix=%s, log_slower_than_ms=%d",
|
||||||
|
slow_log_cfg->filename_prefix,
|
||||||
|
slow_log_cfg->log_slower_than_ms);
|
||||||
|
|
||||||
|
sf_log_config_to_string_ex(&slow_log_cfg->log_cfg, caption,
|
||||||
|
slow_log_buff, output, size);
|
||||||
|
}
|
||||||
|
|
||||||
void sf_global_config_to_string(char *output, const int size)
|
void sf_global_config_to_string(char *output, const int size)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
|
@ -483,7 +537,7 @@ void sf_global_config_to_string(char *output, const int size)
|
||||||
);
|
);
|
||||||
|
|
||||||
sf_log_config_to_string(&g_sf_global_vars.error_log,
|
sf_log_config_to_string(&g_sf_global_vars.error_log,
|
||||||
"error_log_file", output + len, size - len);
|
"error_log", output + len, size - len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sf_log_config_ex(const char *other_config)
|
void sf_log_config_ex(const char *other_config)
|
||||||
|
|
|
||||||
|
|
@ -157,9 +157,28 @@ static inline int sf_load_context_from_config(SFContext *sf_context,
|
||||||
return sf_load_context_from_config_ex(sf_context, &config);
|
return sf_load_context_from_config_ex(sf_context, &config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sf_load_log_config(IniFullContext *ini_ctx, LogContext *log_ctx,
|
||||||
|
SFLogConfig *log_cfg);
|
||||||
|
|
||||||
|
int sf_load_slow_log_config_ex(IniFullContext *ini_ctx, LogContext *log_ctx,
|
||||||
|
SFSlowLogConfig *slow_log_cfg);
|
||||||
|
|
||||||
|
static inline int sf_load_slow_log_config(const char *config_file,
|
||||||
|
IniContext *ini_context, LogContext *log_ctx,
|
||||||
|
SFSlowLogConfig *slow_log_cfg)
|
||||||
|
{
|
||||||
|
IniFullContext ini_ctx;
|
||||||
|
|
||||||
|
FAST_INI_SET_FULL_CTX_EX(ini_ctx, config_file, "slow_log", ini_context);
|
||||||
|
return sf_load_slow_log_config_ex(&ini_ctx, log_ctx, slow_log_cfg);
|
||||||
|
}
|
||||||
|
|
||||||
void sf_set_log_rotate_size(LogContext *context, const int64_t log_rotate_size);
|
void sf_set_log_rotate_size(LogContext *context, const int64_t log_rotate_size);
|
||||||
|
|
||||||
void sf_log_config_to_string(SFLogConfig *log_cfg,
|
void sf_log_config_to_string_ex(SFLogConfig *log_cfg, const char *caption,
|
||||||
|
const char *other_config, char *output, const int size);
|
||||||
|
|
||||||
|
void sf_slow_log_config_to_string(SFSlowLogConfig *slow_log_cfg,
|
||||||
const char *caption, char *output, const int size);
|
const char *caption, char *output, const int size);
|
||||||
|
|
||||||
void sf_global_config_to_string(char *output, const int size);
|
void sf_global_config_to_string(char *output, const int size);
|
||||||
|
|
@ -171,6 +190,9 @@ void sf_log_config_ex(const char *other_config);
|
||||||
|
|
||||||
#define sf_log_config() sf_log_config_ex(NULL)
|
#define sf_log_config() sf_log_config_ex(NULL)
|
||||||
|
|
||||||
|
#define sf_log_config_to_string(log_cfg, caption, output, size) \
|
||||||
|
sf_log_config_to_string_ex(log_cfg, caption, NULL, output, size)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -600,12 +600,12 @@ int sf_setup_signal_handler()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LOG_SCHEDULE_ENTRIES_COUNT 3
|
||||||
|
|
||||||
int sf_startup_schedule(pthread_t *schedule_tid)
|
int sf_startup_schedule(pthread_t *schedule_tid)
|
||||||
{
|
{
|
||||||
#define SCHEDULE_ENTRIES_COUNT 3
|
|
||||||
|
|
||||||
ScheduleArray scheduleArray;
|
ScheduleArray scheduleArray;
|
||||||
ScheduleEntry scheduleEntries[SCHEDULE_ENTRIES_COUNT];
|
ScheduleEntry scheduleEntries[LOG_SCHEDULE_ENTRIES_COUNT];
|
||||||
|
|
||||||
scheduleArray.entries = scheduleEntries;
|
scheduleArray.entries = scheduleEntries;
|
||||||
sf_setup_schedule(&g_log_context, &g_sf_global_vars.error_log,
|
sf_setup_schedule(&g_log_context, &g_sf_global_vars.error_log,
|
||||||
|
|
@ -615,6 +615,28 @@ int sf_startup_schedule(pthread_t *schedule_tid)
|
||||||
&g_sf_global_vars.continue_flag);
|
&g_sf_global_vars.continue_flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sf_add_slow_log_schedule(LogContext *pContext,
|
||||||
|
SFSlowLogConfig *slow_log_cfg)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
ScheduleArray scheduleArray;
|
||||||
|
ScheduleEntry scheduleEntries[LOG_SCHEDULE_ENTRIES_COUNT];
|
||||||
|
|
||||||
|
if (!slow_log_cfg->enabled) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((result=sf_logger_init(pContext, slow_log_cfg->
|
||||||
|
filename_prefix)) != 0)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduleArray.entries = scheduleEntries;
|
||||||
|
sf_setup_schedule(pContext, &slow_log_cfg->log_cfg, &scheduleArray);
|
||||||
|
return sched_add_entries(&scheduleArray);
|
||||||
|
}
|
||||||
|
|
||||||
void sf_set_current_time()
|
void sf_set_current_time()
|
||||||
{
|
{
|
||||||
g_current_time = time(NULL);
|
g_current_time = time(NULL);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,11 @@ int sf_service_destroy_ex(SFContext *sf_context);
|
||||||
#define sf_service_destroy() sf_service_destroy_ex(&g_sf_context)
|
#define sf_service_destroy() sf_service_destroy_ex(&g_sf_context)
|
||||||
|
|
||||||
int sf_setup_signal_handler();
|
int sf_setup_signal_handler();
|
||||||
|
|
||||||
int sf_startup_schedule(pthread_t *schedule_tid);
|
int sf_startup_schedule(pthread_t *schedule_tid);
|
||||||
|
int sf_add_slow_log_schedule(LogContext *pContext,
|
||||||
|
SFSlowLogConfig *slow_log_cfg);
|
||||||
|
|
||||||
void sf_set_current_time();
|
void sf_set_current_time();
|
||||||
|
|
||||||
int sf_socket_server_ex(SFContext *sf_context);
|
int sf_socket_server_ex(SFContext *sf_context);
|
||||||
|
|
|
||||||
|
|
@ -118,4 +118,16 @@ typedef struct sf_log_config {
|
||||||
int64_t rotate_on_size;
|
int64_t rotate_on_size;
|
||||||
} SFLogConfig;
|
} SFLogConfig;
|
||||||
|
|
||||||
|
typedef struct sf_slow_log_config {
|
||||||
|
bool enabled;
|
||||||
|
int log_slower_than_ms;
|
||||||
|
char filename_prefix[64];
|
||||||
|
SFLogConfig log_cfg;
|
||||||
|
} SFSlowLogConfig;
|
||||||
|
|
||||||
|
typedef struct sf_slow_log_context {
|
||||||
|
SFSlowLogConfig cfg;
|
||||||
|
LogContext ctx;
|
||||||
|
} SFSlowLogContext;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -151,14 +151,16 @@ ScheduleEntry *sf_logger_set_schedule_entry(struct log_context *pContext,
|
||||||
INIT_SCHEDULE_ENTRY_EX(*pScheduleEntry, sched_generate_next_id(),
|
INIT_SCHEDULE_ENTRY_EX(*pScheduleEntry, sched_generate_next_id(),
|
||||||
log_cfg->rotate_time, 86400, log_notify_rotate, pContext);
|
log_cfg->rotate_time, 86400, log_notify_rotate, pContext);
|
||||||
pScheduleEntry++;
|
pScheduleEntry++;
|
||||||
|
}
|
||||||
|
|
||||||
if (log_cfg->keep_days > 0) {
|
if ((log_cfg->rotate_everyday || log_cfg->rotate_on_size > 0) &&
|
||||||
log_set_keep_days(pContext, log_cfg->keep_days);
|
(log_cfg->keep_days > 0))
|
||||||
INIT_SCHEDULE_ENTRY_EX(*pScheduleEntry, sched_generate_next_id(),
|
{
|
||||||
log_cfg->delete_old_time, 86400, log_delete_old_files,
|
log_set_keep_days(pContext, log_cfg->keep_days);
|
||||||
pContext);
|
INIT_SCHEDULE_ENTRY_EX(*pScheduleEntry, sched_generate_next_id(),
|
||||||
pScheduleEntry++;
|
log_cfg->delete_old_time, 86400, log_delete_old_files,
|
||||||
}
|
pContext);
|
||||||
|
pScheduleEntry++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pScheduleEntry;
|
return pScheduleEntry;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue