logger.c: log_set_prefix and log_set_filename support re-entry

pull/47/head^2
YuQing 2023-11-21 15:56:44 +08:00
parent 5bda2dfef6
commit 89e70977d5
1 changed files with 27 additions and 14 deletions

View File

@ -226,29 +226,42 @@ int log_set_prefix_ex(LogContext *pContext, const char *base_path,
const char *filename_prefix) const char *filename_prefix)
{ {
int result; int result;
char log_filename[MAX_PATH_SIZE];
if ((result=check_and_mk_log_dir(base_path)) != 0) if ((result=check_and_mk_log_dir(base_path)) != 0)
{ {
return result; return result;
} }
snprintf(pContext->log_filename, MAX_PATH_SIZE, snprintf(log_filename, MAX_PATH_SIZE, "%s/logs/%s.log",
"%s/logs/%s.log", base_path, filename_prefix); base_path, filename_prefix);
return log_set_filename_ex(pContext, log_filename);
return log_open(pContext);
} }
int log_set_filename_ex(LogContext *pContext, const char *log_filename) int log_set_filename_ex(LogContext *pContext, const char *log_filename)
{ {
if (log_filename == NULL) { if (log_filename == NULL || *log_filename == '\0')
fprintf(stderr, "file: "__FILE__", line: %d, " \ {
"log_filename is NULL!\n", __LINE__); fprintf(stderr, "file: "__FILE__", line: %d, "
"log_filename is NULL or empty!\n", __LINE__);
return EINVAL; return EINVAL;
} }
if (*(pContext->log_filename) == '\0')
{
snprintf(pContext->log_filename, MAX_PATH_SIZE, "%s", log_filename); snprintf(pContext->log_filename, MAX_PATH_SIZE, "%s", log_filename);
return log_open(pContext); return log_open(pContext);
} }
if (strcmp(log_filename, pContext->log_filename) == 0)
{
return 0;
}
snprintf(pContext->log_filename, MAX_PATH_SIZE, "%s", log_filename);
return log_reopen_ex(pContext);
}
void log_set_cache_ex(LogContext *pContext, const bool bLogCache) void log_set_cache_ex(LogContext *pContext, const bool bLogCache)
{ {
pContext->log_to_cache = bLogCache; pContext->log_to_cache = bLogCache;