Raport z logów serweraTworzenie i dostosowywanie

Skrypt w Pythonie, który odczytuje logi dostępu Twojego serwera WWW i zamienia je w czytelny raport stron i błędów

Zwykle gotowe w ok. 15 minutPoprawki w cenieKontrola jakości
Pakiety
Ochrona płatnościSzczegóły
  • Poprawki w ramach pakietu są bezpłatne.
  • Jeśli nie odpowiesz w ciągu 3 dni od dostarczenia pracy, zostanie ona zaakceptowana automatycznie.

Pieniądze są rezerwowane w chwili płatności i przekazywane dopiero po akceptacji pracy.

Skrypt w Pythonie, który odczytuje logi dostępu Twojego serwera WWW i zamienia je w czytelny raport stron i błędów

Przykładowy rezultat

Przykład dla pakietu Standard

Łączenie miesięcznych plików sprzedaży 9 sklepów w jeden raport w Excelu

Jak się go uruchamia

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Folder: sales/2026-10, znaleziono 9 plików
2026-11-02 09:14:03 INFO  shop-01.csv: 1284 wiersze
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 wierszy
2026-11-02 09:14:04 WARN  shop-07.csv: pominięto 3 wiersze bez ceny (linie 88, 412, 913)
2026-11-02 09:14:05 INFO  Gotowe: 10 412 wierszy -> report-2026-10.xlsx (arkusze „Sprzedaż” i „Podsumowanie”)

Ustawienia zamiast kodu

Nazwy kolumn każdego sklepu są zapisane w settings.ini, więc nowy sklep albo kolumna o zmienionej nazwie to po prostu jeden wiersz w tym pliku:

[columns]
date = Data, Data sprzedaży, Dzień
product = Produkt, Towar, Nazwa
quantity = Ilość, Szt., Liczba sztuk
price = Cena, Cena jedn.

Fragment kodu

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Wczytuje plik jednego sklepu i nadaje mu nazwy kolumn raportu."""
    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}: brak kolumny dla '{name}' (szukano: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Pliki: archiwum ZIP z plikami merge_sales.py (310 wierszy), settings.ini, requirements.txt oraz README, które opisuje instalację Pythona, uruchomienie skryptu i znaczenie każdego komunikatu w dzienniku. Klient uruchamia skrypt na własnym komputerze.

Klient: mała sieć 9 sklepów papierniczych; każdy sklep przesyła sprzedaż za miesiąc w pliku CSV lub Excel, z nieco innymi nazwami kolumn. Zadanie: jeden skrypt, który wczytuje każdy plik z folderu, sprowadza kolumny do jednego układu i zapisuje jeden raport w Excelu z całą sprzedażą oraz arkuszem podsumowań według sklepów.

Klient i wszystkie dane są wymyślone.

O usłudze

Twój serwer WWW zapisuje każde zapytanie w logu dostępu, ale plik z milionami wierszy niewiele mówi, dopóki ktoś go nie policzy. Ten skrypt w Pythonie odczytuje logi dostępu Nginx lub Apache, także starsze skompresowane, i tworzy raport: zapytania według dnia i godziny, najczęściej odwiedzane strony, kody statusu, strony zwracające 404 lub 500 i to, skąd przyszli odwiedzający. Pakiet Premium liczy roboty wyszukiwarek osobno od ludzi i zapisuje skoroszyt Excel z kartą na każdą sekcję. Adresy IP odwiedzających domyślnie nie trafiają do raportu albo są skracane, jeśli ich potrzebujesz. Prześlij nam wiersz formatu logu z ustawień serwera i 20-30 wierszy ze zmienionymi adresami. Uruchamiasz go na swoim serwerze lub komputerze; odczytuje logi i nie zmienia żadnych ustawień.

Co obejmuje usługa

  • Co otrzymaszArchiwum ZIP ze skryptem w Pythonie, plikiem README z instrukcją krok po kroku oraz, od pakietu Standard, plikiem ustawień ze ścieżkami logów i opcjami raportu; kod widać też na stronie zamówienia.
  • Nginx i ApachePopularne formaty logów albo Twój, jeśli się różni
  • Błędy ze stronamiKtóre adresy zwracają 404 lub 500 i jak często
  • Także stare logiOd pakietu Standard skompresowane pliki .gz odczytywane bez rozpakowywania
  • Bez danych osobowychAdresy IP pominięte lub skrócone
  • Czytelny kodZ komentarzami, łatwo później dodać sekcję

Jak to działa

  1. 1
    ZadaniePrzysyłasz format logu i kilka wierszy ze zmienionymi adresami
  2. 2
    KodPiszemy skrypt i instrukcję uruchomienia
  3. 3
    WypróbujUruchamiasz go na kopii logu z jednego dnia i przeglądasz raport
  4. 4
    ZmianyZgłaszasz poprawki w ramach pakietu i przesyłasz ewentualny komunikat o błędzie

Czego potrzebujemy od Ciebie

Twój serwer WWW (Nginx lub Apache), wiersz log_format lub LogFormat z jego ustawień, jeśli został zmieniony, i 20-30 wierszy logu dostępu z adresami IP zastąpionymi zmyślonymi. Gdzie są przechowywane logi i jak są rotowane, jak duży jest log z jednego dnia, co ma pokazywać raport i w jakiej formie (CSV lub Excel) oraz gdzie będzie działał: na samym serwerze (z jego systemem) czy na Twoim komputerze.

Zapytamy Cię:

  • Jaki serwer WWW i format logu?
  • Co ma pokazywać raport?
  • Jak często go potrzebujesz?
  • Gdzie będzie działał?

Porównaj pakiety

PakietyPodstawowyJeden log, jeden raport61 złStandardRaport z ustawieniami125 złPremiumNarzędzie do raportów z logów252 zł
Termin1 dzień2 dni3 dni
Poprawki123
Koddo 150 wierszydo 400 wierszydo 1000 wierszy
Pliki z kodem1do 3do 8
Plik ustawieńNieTakTak
Czytelne komunikaty o błędach i logNieTakTak
Opcje uruchamiania i instrukcja uruchamiania według harmonogramuNieNieTak
Instrukcja instalacji i uruchomienia (README)TakTakTak
JęzykPythonPythonPython
Zamów PodstawowyZamów StandardZamów Premium

Ochrona płatności

Płacisz przy składaniu zamówienia, ale pieniądze są przekazywane tylko za zaakceptowaną pracę.

  • Stała cenaCena pakietu nie zmienia się po zapłacie.
  • Pieniądze są zarezerwowanePrzy płatności kwota jest tylko rezerwowana. Serwis otrzymuje ją dopiero po akceptacji pracy.
  • Sprawdzone przed dostarczeniemKażdy wynik przechodzi kontrolę jakości, zanim do Ciebie trafi, a przed akceptacją widzisz go na stronie zamówienia.
  • Bezpłatne poprawkiProś o poprawki w ramach briefu tyle razy, ile przewiduje pakiet.
  • Akceptacja po 3 dniachJeśli w ciągu 3 dni od dostarczenia pracy ani jej nie zaakceptujesz, ani nie poprosisz o poprawki, zostanie zaakceptowana automatycznie. Jeśli po dostarczeniu napiszesz na czacie zamówienia, zamówienie czeka; po naszej odpowiedzi możemy ponownie uruchomić odliczanie 3 dni i poinformujemy o tym na czacie.
  • Ponowne wykonanie lub pełny zwrot pieniędzyJeśli wynik nie odpowiada Twojemu briefowi, a poprawki tego nie naprawiły, lub praca trwa ponad dwa razy dłużej niż termin, napisz na czacie zamówienia: wykonamy pracę ponownie albo zwrócimy całą płatność.
Jak to działa →

Pytania i odpowiedzi

Czy to to samo co analityka internetowa?

Nie. Liczy to, co zobaczył serwer: każde zapytanie, także od robotów i skryptów, bez plików cookie i kodu śledzącego. Liczby będą się różnić od Twojego serwisu analitycznego, a każde z tych spojrzeń jest przydatne na swój sposób.

A adresy IP odwiedzających?

W wielu krajach są uznawane za dane osobowe, więc raport domyślnie je pomija. Jeśli ich potrzebujesz, na przykład żeby zobaczyć jeden adres zalewający stronę zapytaniami, mogą zostać skrócone.

Czy może blokować złych odwiedzających?

Nie. Tylko odczytuje logi i tworzy raport; nie zmienia ustawień serwera ani zapory.

Czy będziecie czytać moje logi?

Nie. Skrypt uruchamiasz po swojej stronie. Potrzebujemy tylko wiersza formatu i kilku wierszy ze zmienionymi adresami.

Nie ma tu odpowiedzi?

Pakiety