Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Log rolling question

Reply
Thread Tools

Log rolling question

 
 
elake
Guest
Posts: n/a
 
      10-25-2005
I have an application that creates a lot of large log files. I only
want to keep logs for the previous 4 months. I am looking for a way to
list the contents of the log dir and if the create date on the log is
older than 4 months delete it. I have looked at the os.stat() function
to get the created date but I can't figure out how to get the date to
go back to a previos time.

Any help would be appreciated.

 
Reply With Quote
 
 
 
 
Larry Bates
Guest
Posts: n/a
 
      10-25-2005
import time
#
# 120 days, 24 hours, 60 monutes, 60 seconds
#
fourmonthsago=time.time()-(120*24*60*60)

Compare fourmonthsago value to modified date of files.
Delete those that are less.

Larry Bates


elake wrote:
> I have an application that creates a lot of large log files. I only
> want to keep logs for the previous 4 months. I am looking for a way to
> list the contents of the log dir and if the create date on the log is
> older than 4 months delete it. I have looked at the os.stat() function
> to get the created date but I can't figure out how to get the date to
> go back to a previos time.
>
> Any help would be appreciated.
>

 
Reply With Quote
 
 
 
 
elake
Guest
Posts: n/a
 
      10-25-2005
Is there a way to do this for a whole calendar month?

 
Reply With Quote
 
Bengt Richter
Guest
Posts: n/a
 
      10-25-2005
On 25 Oct 2005 10:22:24 -0700, "elake" <> wrote:

>Is there a way to do this for a whole calendar month?
>

Yes, if you can specify exactly what you want to do. E.g.,
today is 2005-10-25. What date would you like as the earliest
to keep for the four months? What if today's date was not
available in the month of four months ago? Do you want to
have cleansed logs always start on the first day of a month?
if so, do you want to go back four prior months, or consider
any current month days as being a month-log even if partial,
and only include 3 prior months? You haven't defined your requirements

if you wanted to go back to the first day of four months back, maybe
you could call that earliest_time and delete all files where after
import os, stat
you remove files where
os.stat(pathtofile)[stat.ST_MTIME] < earliest_time

going back from current time might go something like

>>> import time
>>> y,m = time.localtime()[:2]
>>> y,m

(2005, 10)
>>> y,m = divmod(y*12+m-1-4,12) # -1 for 0..11 months
>>> m+=1 # back to 1..12
>>> y,m

(2005, 6)
>>> time.strptime('%04d-%02d-01'%(y,m), '%Y-%m-%d')

(2005, 6, 1, 0, 0, 0, 2, 152, -1)
>>> earliest_time = time.mktime(time.strptime('%04d-%02d-01'%(y,m), '%Y-%m-%d'))
>>> earliest_time

1117609200.0
>>> time.ctime(earliest_time)

'Wed Jun 01 00:00:00 2005'

Hm ...
Jun, Jul, Aug, Sep, Oct
-4 -3 -2 -1 -0
I guess that guarantees 4 full prior months.

I used strptime to build a complete 9-tuple rather than doing it by hand, which
I'm not sure off hand how to do

There's another module that does date interval addition/subtraction, but it didn't
come with the batteries in my version.

BTW, make sure all your date stuff is using the same epoch base date, in case you
have some odd variant source of numerically encoded dates, e.g., look at

>>> import time
>>> time.localtime(0)

(1969, 12, 31, 16, 0, 0, 2, 365, 0)
>>> time.ctime(0)

'Wed Dec 31 16:00:00 1969'
>>> time.gmtime(0)

(1970, 1, 1, 0, 0, 0, 3, 1, 0)

Regards,
Bengt Richter
 
Reply With Quote
 
NickC
Guest
Posts: n/a
 
      10-26-2005
If you're on Python 2.4, then consider whether or not you can use a
TimedRotatingLogFileHandler from the logging module to handle this for
you:
http://www.python.org/doc/2.4.1/lib/node344.html

Of course, that only works if defining a "month" as 30 days is
acceptable. If you genuinely need calendar months, then you still need
to do it manually.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Rolling upgrade of Active-active cluster for SQL server 2000 =?Utf-8?B?U3VzaGls?= MCSE 1 02-16-2006 05:57 AM
Might aswell get the ball rolling... Frankie The Lounge 14 10-12-2005 06:49 AM
Rolling to different location using DailyRollingFileAppender Dharmveer Jain Java 0 09-14-2004 01:51 PM
Log4j Not Rolling Files Brett Sheeran Java 1 02-23-2004 11:29 AM
log4j Rolling + Date FileAppender PT Java 0 11-06-2003 01:55 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57