Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 107906 - [PATCH] Logrotate-3.7.1 weekly rotation is not working
Summary: [PATCH] Logrotate-3.7.1 weekly rotation is not working
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Daniel Gryniewicz (RETIRED)
URL:
Whiteboard:
Keywords: Inclusion
Depends on:
Blocks:
 
Reported: 2005-10-02 09:04 UTC by Boris Zijsling
Modified: 2005-10-15 15:10 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
patch for the problem. (logrotate-3.7.1-weekly.patch,1.14 KB, patch)
2005-10-02 09:05 UTC, Boris Zijsling
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Boris Zijsling 2005-10-02 09:04:00 UTC
http://forums.gentoo.org/viewtopic-p-2769131.html    
    
The bug is lenghtily outlined there.    
    
Short version: Logrotate does not rotate weekly items correctly.   
   
I made a patch which applies cleanly against logrotate.3.7.1-r1. I made a  
revised ebuild which installed no problems on my system. I haven't tested the  
changes for correctness yet, as that requires some time.  
  
Here's the patch  
 
--- logrotate-3.7.1-old/logrotate.c     2004-10-19 23:41:24.000000000 +0200  
 +++ logrotate-3.7.1-new/logrotate.c     2005-10-02 17:29:22.380767321 +0200  
 @@ -424,12 +424,15 @@ int findNeedRotating(logInfo * log, int  
          switch (log->criterium) {  
            case ROT_WEEKLY:  
              /* rotate if:  
 -                  1) the current weekday is before the weekday of the  
 -                     last rotation  
 +                  1) the day of the week is the same as the day of the week 
of  
 +                     the previous rotation but not the same day of the year  
 +                     this will rotate it on the same day every week, but not  
 +                     twice a day.  
                    2) more then a week has passed since the last  
                       rotation */  
 -            state->doRotate = ((now.tm_wday < state->lastRotated.tm_wday) ||  
 -                              ((mktime(&now) - mktime(&state->lastRotated)) 
>  
 +            state->doRotate = ((now.tm_wday == state->lastRotated.tm_wday &&  
 +                               now.tm_yday != state->lastRotated.tm_yday) ||  
 +                               ((mktime(&now) - mktime(&state->lastRotated)) 
>  
                                 (7 * 24 * 3600)));  
              break;  
            case ROT_MONTHLY:
Comment 1 Boris Zijsling 2005-10-02 09:05:48 UTC
Created attachment 69735 [details, diff]
patch for the problem.

Please review changes for correctness.
Comment 2 Boris Zijsling 2005-10-09 00:24:30 UTC
It works:

-rw-------  1 root    root      57996 Oct  9 09:19 messages
-rw-------  1 root    root     155760 Oct  9 00:10 messages.1.gz
-rw-------  1 root    root     197750 Oct  2 18:53 messages.2.gz

logrotate -d shows this right now (9:20):

rotating pattern: /var/log/messages  weekly (52 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/messages
  log does not need rotating
Comment 3 Daniel Gryniewicz (RETIRED) gentoo-dev 2005-10-10 12:30:51 UTC
Thanks.  I'll add the patch hopefully tonight.
Comment 4 Daniel Gryniewicz (RETIRED) gentoo-dev 2005-10-15 15:10:36 UTC
fixed in 3.7.1-r2.  Sorry for the delay.