Aqui está um script, que funciona em Windows e em Linux, e que ajuda a "controlar" o tamanho dos ficheiros de log que queira monitorizar.
Código:
import os, bz2, sys # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Log Size Control 100% cross platform (windows/linux); # # Take the files for array # # Check the size if its bigger them # # max_size compress to bz2 file # # # # Made by Rui Gomes - 29-07-2008 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # max_size=20000 #define the max size of the log in kb try: logs=open("loglist.data", "r").readlines() #catch the data in the data file except: print "Its not possible read the config file loglist.data" #if the file its not present or dont have rights to read him sys.exit(1) for log in logs: if os.path.isfile(log): #if the line in the loglist.data its a file log=log.strip("\n") #Take out the change line character log=os.path.normpath(log) #make it easy you can put / or \ gonna always work in both systems (windows/linux) size=os.path.getsize(log)#get the size of the file sizekb=size/1024 #for more precision use sizekb=float(size)/1024 if sizekb >= max_size: #test if the file its big or not... try: #test if the file its free os.rename(log, "%s.bck"%log) #rename the file log uncompress_data=open("%s.bck"%log, "rb").read() compress_output=bz2.compress(uncompress_data) #compress the renamed file file_output=open(log+".bz", 'wb') # file_output.write(compress_output)# create the compress file of the log file_output.close() # os.unlink("%s.bck"%log) #remove the backup file except IOError: print "Error file lock" pass #if the file its not free skip the compression to the next time, and move to the next file except: print "Unknown Error" #some vodoo happen!!! pass #go to the next file else:#if the line in the loglist.data its not a file print "%s -> This file doesn't exist\n" %log