kern/160432: [patch] Allow both size and at-time specifications for
log rotation.
Ian Lepore
freebsd at damnhippie.dyndns.org
Sat Sep 3 17:50:09 UTC 2011
>Number: 160432
>Category: kern
>Synopsis: [patch] Allow both size and at-time specifications for log rotation.
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Sep 03 17:50:08 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Ian Lepore <freebsd at damnhippie.dyndns.org>
>Release: FreeBSD 8.2-RC3 arm
>Organization:
none
>Environment:
FreeBSD dvb 8.2-RC3 FreeBSD 8.2-RC3 #49: Tue Feb 15 22:52:14 UTC 2011 root at revolution.hippie.lan:/usr/obj/arm/usr/src/sys/DVB arm
>Description:
If both size-based and time-based rotation parameters are specified for the
same log file in newsyslog.conf, the size specification is effectively
ignored because the rotation-decision logic returns early if the at-time
test isn't satisfied.
>How-To-Repeat:
Specify both a size limit and a time specification for the same file. The
log will not be rotated until the designated time regardless of how large
it becomes before then.
>Fix:
This patch allows both size and time to be specified in a useful way. The
log file will be rotated when either the size is exceeded or the designated
time arrives.
--- diff.tmp begins here ---
--- newsyslog.c.orig 2011-09-03 11:26:46.000000000 -0600
+++ newsyslog.c 2011-08-31 16:06:09.000000000 -0600
@@ -516,7 +516,12 @@ do_entry(struct conf_entry * ent)
printf("does not exist, skipped%s.\n", temp_reason);
}
} else {
- if (ent->flags & CE_TRIMAT && !force && !rotatereq) {
+ if (ent->trsize > 0 && ent->fsize >= ent->trsize) {
+ if (verbose) {
+ printf("(size overrides at-time) ");
+ }
+ /* not returning here is how size overrides at-time */
+ } else if (ent->flags & CE_TRIMAT && !force && !rotatereq) {
diffsecs = ptimeget_diff(timenow, ent->trim_at);
if (diffsecs < 0.0) {
/* trim_at is some time in the future. */
--- diff.tmp ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list