Report dai log del serverSviluppo e personalizzazione

Uno script Python che legge i log di accesso del suo server web e li trasforma in un report chiaro di pagine ed errori

Di solito pronto in 15 minutiRevisioni incluseControllo di qualità
Pacchetti
Pagamento protettoDettagli
  • Le revisioni previste dal pacchetto sono gratuite.
  • Se non risponde entro 3 giorni dalla consegna, il lavoro viene accettato automaticamente.

Il denaro viene riservato al momento del pagamento e sbloccato solo quando accetta il lavoro.

Uno script Python che legge i log di accesso del suo server web e li trasforma in un report chiaro di pagine ed errori

Esempio di risultato

Esempio per il pacchetto Standard

Unire i file mensili delle vendite di 9 negozi in un unico report Excel

Come si esegue

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Cartella: sales/2026-10, 9 file trovati
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 righe
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 righe
2026-11-02 09:14:04 WARN  shop-07.csv: saltate 3 righe senza prezzo (righe 88, 412, 913)
2026-11-02 09:14:05 INFO  Fatto: 10.412 righe -> report-2026-10.xlsx (fogli "Vendite" e "Totali")

Impostazioni, non codice

I nomi delle colonne di ogni negozio si trovano in settings.ini, quindi un nuovo negozio o una colonna rinominata è una riga lì:

[columns]
date = Data, Data vendita, Giorno
product = Prodotto, Articolo, Descrizione
quantity = Q.tà, Quantità, Pz
price = Prezzo, Prezzo unitario

Una parte del codice

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Legge il file di un negozio e gli dà i nomi di colonna del report."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: nessuna colonna per '{name}' (cercate: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

File: un archivio ZIP con merge_sales.py (310 righe), settings.ini, requirements.txt e un README su come installare Python, eseguire lo script e cosa significa ogni messaggio del registro. Il cliente lo esegue sul proprio computer.

Cliente: una piccola catena di 9 cartolerie; ogni negozio invia le vendite del mese in un file CSV o Excel, con nomi di colonna leggermente diversi. Compito: un unico script che legge tutti i file di una cartella, porta le colonne a una stessa forma e scrive un solo report Excel con tutte le vendite e un foglio di totali per negozio.

Il cliente e tutti i dati sono inventati.

Informazioni sul servizio

Il suo server web annota ogni richiesta nel log di accesso, ma un file di milioni di righe dice poco finché non viene conteggiato. Questo script Python legge i log di accesso di Nginx o Apache, compresi quelli vecchi compressi, e crea un report: richieste per giorno e ora, le pagine più visitate, i codici di stato, le pagine che restituiscono 404 o 500 e da dove arrivano i visitatori. Il Premium conta i crawler dei motori di ricerca separatamente dalle persone e salva una cartella di lavoro Excel con una scheda per sezione. Gli indirizzi IP dei visitatori restano fuori dal report di default, oppure vengono abbreviati se le servono. Ci invii la riga del formato di log dalle impostazioni del server e 20-30 righe con gli indirizzi modificati. Lo esegue lei sul server o sul computer; legge i log e non cambia alcuna impostazione.

Cosa è incluso

  • Cosa riceveUn archivio ZIP con lo script Python, un README con le istruzioni passo passo e, dallo Standard, un file di impostazioni con i percorsi dei log e le opzioni del report; il codice è visibile anche nella pagina dell'ordine.
  • Nginx e ApacheI formati di log comuni, o il suo se è diverso
  • Errori con le pagineQuali indirizzi danno 404 o 500, e quanto spesso
  • Anche i log vecchiDallo Standard, i file .gz compressi letti così come sono
  • Nessun dato personaleIndirizzi IP esclusi o abbreviati
  • Codice leggibileCon commenti, facile aggiungere una sezione in seguito

Come funziona

  1. 1
    CompitoLei invia il formato del log e qualche riga con gli indirizzi modificati
  2. 2
    CodiceScriviamo lo script e la guida per eseguirlo
  3. 3
    Lo proviLo esegue su una copia del log di un giorno e guarda il report
  4. 4
    ModificheChiede modifiche nei limiti del pacchetto e invia eventuali messaggi di errore

Cosa ci serve da lei

Il suo server web (Nginx o Apache), la riga log_format o LogFormat dalle sue impostazioni se è stata modificata, e 20-30 righe del log di accesso con gli indirizzi IP sostituiti da indirizzi inventati. Dove sono conservati i log e come vengono ruotati, quanto è grande il log di un giorno, cosa deve mostrare il report e in che forma (CSV o Excel), e dove girerà: sul server stesso (con il suo sistema) o sul suo computer.

Le chiederemo:

  • Quale server web e quale formato di log?
  • Cosa deve mostrare il report?
  • Ogni quanto le serve?
  • Dove verrà eseguito?

Confronto dei pacchetti

PacchettiBaseUn log, un report15 €StandardReport con impostazioni30 €PremiumStrumento di report dei log60 €
Tempi di consegna1 giorno2 giorni3 giorni
Revisioni123
Codicefino a 150 righefino a 400 righefino a 1.000 righe
File di codice1fino a 3fino a 8
File di impostazioniNoSìSì
Messaggi di errore chiari e un logNoSìSì
Opzioni di avvio e una guida per eseguirlo a orari programmatiNoNoSì
Guida all'installazione e all'avvio (README)SìSìSì
LinguaggioPythonPythonPython
Ordina BaseOrdina StandardOrdina Premium

Pagamento protetto

Paga al momento dell'ordine, ma il denaro viene sbloccato solo per un lavoro accettato.

  • Prezzo fissoIl prezzo del pacchetto non cambia dopo il pagamento.
  • Il denaro viene riservatoAl pagamento, l'importo viene solo riservato. Passa a Dleex quando accetta il lavoro.
  • Verificato prima della consegnaOgni risultato passa un controllo di qualità prima di arrivare a lei, e lo vede nella pagina dell'ordine prima di accettarlo.
  • Revisioni gratuiteRichieda revisioni nell'ambito del suo brief tante volte quante ne prevede il pacchetto.
  • Accettazione dopo 3 giorniSe entro 3 giorni dalla consegna non accetta il lavoro né richiede una revisione, il lavoro viene accettato automaticamente. Se scrive nella chat dell'ordine dopo la consegna, l'ordine resta in attesa; dopo la nostra risposta potremmo far ripartire i 3 giorni e glielo indicheremo nella chat.
  • Rifacimento o rimborso totaleSe il risultato non corrisponde al suo brief e le revisioni non hanno risolto il problema, oppure il lavoro richiede più del doppio dei tempi di consegna previsti, scriva nella chat dell'ordine: rifaremo il lavoro o le rimborseremo l'intero pagamento.
Come funziona →

Domande e risposte

È come uno strumento di web analytics?

No. Conta ciò che ha visto il server: ogni richiesta, comprese quelle di crawler e script, senza cookie né codice di tracciamento. I numeri saranno diversi dal suo servizio di analytics, e ciascuna vista è utile a modo suo.

E gli indirizzi IP dei visitatori?

In molti paesi sono dati personali, quindi di default il report li esclude. Se le servono, per esempio per vedere un indirizzo che inonda il sito di richieste, possono essere abbreviati.

Può bloccare i visitatori malevoli?

No. Si limita a leggere i log e a creare un report; non cambia le impostazioni del server né il firewall.

Leggerete voi i miei log?

No. Lo script lo esegue lei. Ci servono solo la riga del formato e qualche riga con gli indirizzi modificati.

Non hai trovato la risposta?

Pacchetti