--- configs/logger.conf.sample +++ configs/logger.conf.sample @@ -40,6 +40,9 @@ ;queue_log_name = queue_log ; ; Log rotation strategy: +; none: Do not perform any logrotation at all. You should make +; very sure to set up some external logrotate mechanism +; as the asterisk logs can get very large, very quickly. ; sequential: Rename archived logs in order, such that the newest ; has the highest sequence number [default]. When ; exec_after_rotate is set, ${filename} will specify index e856768..5ff3080 100644 --- main/logger.c +++ main/logger.c @@ -92,6 +92,7 @@ struct ast_callid { AST_THREADSTORAGE_CUSTOM(unique_callid, NULL, unique_callid_cleanup); static enum rotatestrategy { + NONE = 0, /* Do not rotate log files at all, instead rely on external mechanisms */ SEQUENTIAL = 1 << 0, /* Original method - create a new file, in order */ ROTATE = 1 << 1, /* Rotate all files, such that the oldest file has the highest suffix */ TIMESTAMP = 1 << 2, /* Append the epoch timestamp onto the end of the archived file */ @@ -427,6 +428,8 @@ static void init_logger_chain(int locked, const char *altconf) rotatestrategy = ROTATE; } else if (strcasecmp(s, "sequential") == 0) { rotatestrategy = SEQUENTIAL; + } else if (strcasecmp(s, "none") == 0) { + rotatestrategy = NONE; } else { fprintf(stderr, "Unknown rotatestrategy: %s\n", s); } @@ -610,6 +613,9 @@ static int rotate_file(const char *filename) char *suffixes[4] = { "", ".gz", ".bz2", ".Z" }; switch (rotatestrategy) { + case NONE: + /* No rotation */ + break; case SEQUENTIAL: for (x = 0; ; x++) { snprintf(new, sizeof(new), "%s.%d", filename, x); @@ -810,7 +816,7 @@ static int reload_logger(int rotate, const char *altconf) } if (f->fileptr && (f->fileptr != stdout) && (f->fileptr != stderr)) { int rotate_this = 0; - if (ftello(f->fileptr) > 0x40000000) { /* Arbitrarily, 1 GB */ + if (rotatestrategy != NONE && ftello(f->fileptr) > 0x40000000) { /* Arbitrarily, 1 GB */ /* Be more proactive about rotating massive log files */ rotate_this = 1; }