catbean.pages.dev

Como criar um script para arquivar logs por data em subpastas?

Organizar arquivos de log manualmente é uma tarefa tediosa e propensa a erros, especialmente quando o volume é grande. Automatizar esse processo com um script não apenas economiza tempo, mas também garante consistência e precisão na organização dos dados.

Pré-requisitos

Passo 1: Criar o script Python

Primeiro, crie um arquivo chamado archive_logs.py e adicione o seguinte código:

import os
import shutil
from datetime import datetime

def archive_logs_by_date(source_folder):
    for filename in os.listdir(source_folder):
        if filename.endswith('.log'):
            filepath = os.path.join(source_folder, filename)
            try:
                # Extrair data do nome do arquivo (ex: log_2023-10-05.log)
                date_str = filename.split('_')[1].split('.')[0]
                log_date = datetime.strptime(date_str, '%Y-%m-%d')
                target_folder = os.path.join(source_folder, log_date.strftime('%Y-%m-%d'))

                # Criar subpasta se não existir
                if not os.path.exists(target_folder):
                    os.makedirs(target_folder)

                # Mover arquivo para a subpasta
                shutil.move(filepath, os.path.join(target_folder, filename))
                print(f"Movido: {filename} -> {target_folder}")
            except Exception as e:
                print(f"Erro ao processar {filename}: {e}")

if __name__ == "__main__":
    source_folder = "logs"  # Altere para o caminho da sua pasta de logs
    archive_logs_by_date(source_folder)

Passo 2: Executar o script

Abra o terminal, navegue até a pasta onde o script está salvo e execute:

python archive_logs.py

O script irá processar todos os arquivos .log na pasta especificada, extrair a data do nome do arquivo e movê-los para subpastas organizadas por data.

Exemplo Prático

Arquivo de Log (Entrada) Subpasta (Saída)
log_2023-10-05.log logs/2023-10-05/log_2023-10-05.log
log_2023-10-06.log logs/2023-10-06/log_2023-10-06.log
log_2023-10-07.log logs/2023-10-07/log_2023-10-07.log

Conclusão

Com este script, você automatiza a organização de logs em subpastas por data em segundos, eliminando a necessidade de intervenção manual e reduzindo significativamente o risco de erros.