diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-02 17:54:21 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-02 17:54:21 +0000 |
commit | 33398613e71f2769d1d9348962022b53db0bcfcb (patch) | |
tree | b00aa235889ea301fcb592c5815a01d51b48a246 | |
parent | c6f8f943b80fd86a227ba179fac21661b307c2c2 (diff) |
Add option to logger to rename log files with timestamp (issue #8020 reported by jmls)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44172 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | configs/logger.conf.sample | 5 | ||||
-rw-r--r-- | main/logger.c | 64 |
3 files changed, 45 insertions, 26 deletions
@@ -19,3 +19,5 @@ Changes since Asterisk 1.4-beta was branched: and/or H.450 supplementary service) * Added keepstats option to queues.conf which will keep queue statistics during a reload. + * Added rotatetimestamp option to logger.conf which will use + the time to name the logger files instead of sequence number. diff --git a/configs/logger.conf.sample b/configs/logger.conf.sample index 575d4d8e8..09099b6a0 100644 --- a/configs/logger.conf.sample +++ b/configs/logger.conf.sample @@ -24,6 +24,11 @@ ; (defaults to queue_log) ;queue_log_name = queue_log ; +; Rename the logfiles using a timestamp instead of a +; sequence number when "logger rotate" is executed +; (defaults to no). +;rotatetimestamp = yes +; ; This determines whether or not we log generic events to a file ; (defaults to yes). ;event_log = no diff --git a/main/logger.c b/main/logger.c index 10534bd6c..29c4cf48b 100644 --- a/main/logger.c +++ b/main/logger.c @@ -87,6 +87,7 @@ static char queue_log_name[256] = QUEUELOG; static int filesize_reload_needed = 0; static int global_logmask = -1; +static int rotatetimestamp = 0; static struct { unsigned int queue_log:1; @@ -340,6 +341,8 @@ static void init_logger_chain(void) logfiles.event_log = ast_true(s); if ((s = ast_variable_retrieve(cfg, "general", "queue_log_name"))) ast_copy_string(queue_log_name, s, sizeof(queue_log_name)); + if ((s = ast_variable_retrieve(cfg, "general", "rotatetimestamp"))) + rotatetimestamp = ast_true(s); AST_LIST_LOCK(&logchannels); var = ast_variable_browse(cfg, "logfiles"); @@ -404,16 +407,19 @@ int reload_logger(int rotate) f->fileptr = NULL; if (rotate) { ast_copy_string(old, f->filename, sizeof(old)); - - for (x = 0; ; x++) { - snprintf(new, sizeof(new), "%s.%d", f->filename, x); - myf = fopen((char *)new, "r"); - if (myf) - fclose(myf); - else - break; - } - + + if (!rotatetimestamp) { + for (x = 0; ; x++) { + snprintf(new, sizeof(new), "%s.%d", f->filename, x); + myf = fopen((char *)new, "r"); + if (myf) + fclose(myf); + else + break; + } + } else + snprintf(new, sizeof(new), "%s.%ld", f->filename, (long)time(NULL)); + /* do it */ if (rename(old,new)) fprintf(stderr, "Unable to rename file '%s' to '%s'\n", old, new); @@ -428,14 +434,17 @@ int reload_logger(int rotate) if (logfiles.event_log) { snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); if (event_rotate) { - for (x=0;;x++) { - snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, EVENTLOG,x); - myf = fopen((char *)new, "r"); - if (myf) /* File exists */ - fclose(myf); - else - break; - } + if (!rotatetimestamp) { + for (x=0;;x++) { + snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, EVENTLOG,x); + myf = fopen((char *)new, "r"); + if (myf) /* File exists */ + fclose(myf); + else + break; + } + } else + snprintf(new, sizeof(new), "%s/%s.%ld", (char *)ast_config_AST_LOG_DIR, EVENTLOG,(long)time(NULL)); /* do it */ if (rename(old,new)) @@ -456,15 +465,18 @@ int reload_logger(int rotate) if (logfiles.queue_log) { snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR, queue_log_name); if (queue_rotate) { - for (x = 0; ; x++) { - snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, queue_log_name, x); - myf = fopen((char *)new, "r"); - if (myf) /* File exists */ - fclose(myf); - else - break; - } + if (!rotatetimestamp) { + for (x = 0; ; x++) { + snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, queue_log_name, x); + myf = fopen((char *)new, "r"); + if (myf) /* File exists */ + fclose(myf); + else + break; + } + } else + snprintf(new, sizeof(new), "%s/%s.%ld", (char *)ast_config_AST_LOG_DIR, queue_log_name,(long)time(NULL)); /* do it */ if (rename(old, new)) ast_log(LOG_ERROR, "Unable to rename file '%s' to '%s'\n", old, new); |