Ferramentas de Site


dev_geral:python:snippet:logs_size_control

Log Size Control

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.

O script vai buscar os dados dos logs que querem monitorizar ao ficheiro loglist.data

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
dev_geral/python/snippet/logs_size_control.txt · Última modificação em: 2021/12/06 21:05 (edição externa)