aboutsummaryrefslogtreecommitdiffstats
path: root/main/logger.c
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2006-10-02 17:54:21 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2006-10-02 17:54:21 +0000
commit33398613e71f2769d1d9348962022b53db0bcfcb (patch)
treeb00aa235889ea301fcb592c5815a01d51b48a246 /main/logger.c
parentc6f8f943b80fd86a227ba179fac21661b307c2c2 (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
Diffstat (limited to 'main/logger.c')
-rw-r--r--main/logger.c64
1 files changed, 38 insertions, 26 deletions
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);