como manter mais de 2 arquivos de log?

0

Em busca de problemas ocasionais de inicialização, gostaria de manter nos arquivos de log mais de dois que são mantidos agora. Por exemplo, em / var / log, eu tenho Xorg.0.log e Xorg.0.log.old que são criados por dois boot ups e eu preciso acompanhar, por exemplo, os últimos 10 arquivos de log. Semelhante para outros arquivos de log principais, como o dmesg (agora é dmesg e dmesg.0).

    
por bob 12.06.2014 / 08:57

2 respostas

1

O script a seguir copiará um arquivo de log definido ( source ) até um número que você possa definir ( max_number , até 99 como o script agora) em um diretório que você possa definir ( dest ). Os arquivos de log serão nomeados "01logfilename", 02logfilename etc, até o número que você definir.

Se o número máximo de cópias for atingido, o script sempre manterá o último número (definido) de logs, renomeando os arquivos toda vez que o script for executado.

Você pode executar o script adicionando-o aos seus aplicativos de inicialização (Dash > Startup Applications). Observe que você precisa ter permissões suficientes no destino, se você executá-lo no login.

O script

#!/usr/bin/python3
import os
import shutil

source = "/path/to/logfile"
dest = "/path/to/destination/to_keep_the_logs"
max_number = 10 # set number up to 99

files_indest = [i for i in sorted(os.listdir(dest)) if not i.endswith("~")]
sections = [(item[:3], item[3:]) for item in files_indest]
number_oflogs = len(files_indest)

def convert_figures(number):
    if len(str(number)) < 2:
        return "0"+str(number)
    else:
        return str(number)

def lognumbers():
    return [convert_figures(number+1) for number in range(0, number_oflogs+1)]

lognumbers = lognumbers()

if number_oflogs >= max_number:
    os.remove(dest+"/"+files_indest[0])
    for index in range(1, number_oflogs):
        shutil.move(dest+"/"+files_indest[index],
        dest+"/"+lognumbers[index-1]+files_indest[index][2:])
    shutil.copyfile(source, dest+"/"+lognumbers[-2]+source.split("/")[-1])
else:
    shutil.copyfile(source, dest+"/"+lognumbers[-1]+source.split("/")[-1])

Como usar

  • Copie o script e cole em um arquivo de texto vazio, seguro como logscript.py
  • Defina o arquivo de origem (log) depois de source (por exemplo, source = "/var/log/Xorg.0.log" )
  • Defina a pasta de destino para manter os arquivos de log depois de dest
  • Defina o número máximo de arquivos de log para manter
  • Adicione o seguinte comando aos seus aplicativos de inicialização: python3 /path/to/script/script.py

Não é necessário dizer que, se você quiser / precisar executar o script antes do login, precisará iniciá-lo em outro nível.

    
por Jacob Vlijm 12.06.2014 / 23:05
0

O Ubuntu executa o logrotate em uma tarefa do cron que cuida de / var / log. Parece que o perfil para desktop vs servidor (servidor mantém os últimos 8 logs de tudo, se bem me lembro). Aqui está o homem para isso .. link

    
por user283885 12.06.2014 / 23:16