Sunucu log raporuGeliştirme ve Özelleştirme

Web sunucunuzun erişim log'larını okuyan ve onları sayfalar ve hatalarla ilgili net bir rapora dönüştüren bir Python betiği

Genellikle 15 dakika içinde hazırRevizyonlar dahilKalite kontrolü
Paketler
Ödeme korumasıAyrıntılar
  • Paket kapsamındaki revizyonlar ücretsizdir.
  • Teslimattan sonraki 3 gün içinde yanıt vermezseniz iş otomatik olarak onaylanır.

Para, ödeme yaptığınızda bloke edilir ve yalnızca işi onayladığınızda aktarılır.

Web sunucunuzun erişim log'larını okuyan ve onları sayfalar ve hatalarla ilgili net bir rapora dönüştüren bir Python betiği

Örnek sonuç

Standart paket için örnek

Merging the monthly sales files of 9 shops into one Excel report

How it is run

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO  shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN  shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO  Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")

Settings, not code

The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:

[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price

A part of the code

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Reads one shop's file and gives it the report's column names."""
    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}: no column for '{name}' (looked for {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.

Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.

Müşteri ve tüm ayrıntılar kurgusaldır.

Bu hizmet hakkında

Web sunucunuz her isteği erişim log'una yazar, ama milyonlarca satırlık bir dosya sayılana kadar size pek bir şey söylemez. Bu Python betiği, sıkıştırılmış eskiler dahil Nginx ya da Apache erişim log'larını okur ve bir rapor hazırlar: güne ve saate göre istekler, en çok ziyaret edilen sayfalar, durum kodları, 404 ya da 500 döndüren sayfalar ve ziyaretçilerin nereden geldiği. Premium arama motoru tarayıcılarını insanlardan ayrı sayar ve her bölüm için bir sekmeli Excel çalışma kitabı kaydeder. Ziyaretçilerin IP adresleri varsayılan olarak rapora girmez ya da ihtiyacınız varsa kısaltılır. Bize sunucunuzun ayarlarındaki log formatı satırını ve adresleri değiştirilmiş 20-30 satırı gönderin. Sunucunuzda ya da bilgisayarınızda çalıştırırsınız; log'ları okur ve hiçbir ayarı değiştirmez.

Neler dahil

  • Neler alırsınızPython betiğini, adım adım talimatlar içeren bir README dosyasını ve Standart paketten itibaren log yollarını ve rapor seçeneklerini içeren bir ayar dosyasını barındıran bir ZIP arşivi; kod sipariş sayfasında da gösterilir.
  • Nginx ve ApacheYaygın log formatları ya da farklıysa sizinki
  • Sayfalarıyla hatalarHangi adreslerin 404 ya da 500 verdiği ve ne sıklıkla
  • Eski log'lar daStandart paketten itibaren sıkıştırılmış .gz dosyaları olduğu gibi okunur
  • Kişisel veri yokIP adresleri dışarıda bırakılır ya da kısaltılır
  • Okunabilir kodYorumlarla; sonradan bölüm eklemek kolay

Nasıl çalışır

  1. 1
    GörevLog formatını ve adresleri değiştirilmiş birkaç satırı gönderirsiniz
  2. 2
    KodBetiği ve çalıştırma kılavuzunu yazarız
  3. 3
    DeneyinBir günlük log'un kopyasında çalıştırır ve rapora bakarsınız
  4. 4
    DeğişikliklerPaketiniz kapsamında değişiklik ister, varsa hata mesajını gönderirsiniz

Sizden neler gerekiyor

Web sunucunuz (Nginx ya da Apache), değiştirildiyse ayarlarındaki log_format ya da LogFormat satırı ve IP adresleri uydurma olanlarla değiştirilmiş 20-30 erişim log'u satırı. Log'ların nerede tutulduğu ve nasıl döndürüldüğü, bir günlük log'un ne kadar büyük olduğu, raporun neyi ve hangi biçimde (CSV ya da Excel) göstermesi gerektiği ve nerede çalışacağı: sunucunun kendisi (sistemiyle birlikte) ya da bilgisayarınız.

Size soracaklarımız:

  • Hangi web sunucusu ve log formatı?
  • Rapor neyi göstermeli?
  • Ne sıklıkla ihtiyacınız var?
  • Nerede çalışacak?

Paketleri karşılaştırın

PaketlerTemelTek log, tek rapor$16StandartAyarlı rapor$33PremiumLog raporu aracı$67
Teslim süresi1 gün2 gün3 gün
Revizyonlar123
Koden fazla 150 satıren fazla 400 satıren fazla 1.000 satır
Kod dosyası1en fazla 3en fazla 8
Ayar dosyasıHayırEvetEvet
Anlaşılır hata mesajları ve logHayırEvetEvet
Çalıştırma seçenekleri ve zamanlanmış çalıştırma kılavuzuHayırHayırEvet
Kurulum ve çalıştırma kılavuzu (README)EvetEvetEvet
DilPythonPythonPython
Sipariş ver TemelSipariş ver StandartSipariş ver Premium

Ödeme koruması

Sipariş verirken ödersiniz, ancak para yalnızca onaylanan iş için aktarılır.

  • Sabit fiyatPaket fiyatı, ödeme yaptıktan sonra değişmez.
  • Para bloke edilirÖdeme yaptığınızda tutar yalnızca bloke edilir. İşi onayladığınızda hizmete aktarılır.
  • Teslimattan önce kontrolHer sonuç size ulaşmadan önce kalite kontrolünden geçer ve onaylamadan önce sipariş sayfasında görürsünüz.
  • Ücretsiz revizyonlarBrifiniz kapsamında, paketin izin verdiği sayıda değişiklik isteyin.
  • 3 gün sonra onayTeslimattan sonraki 3 gün içinde işi onaylamaz veya değişiklik istemezseniz iş otomatik olarak onaylanır. Teslimattan sonra sipariş sohbetine yazarsanız sipariş bekletilir; yanıt verdikten sonra 3 günlük süreyi yeniden başlatabiliriz ve bunu sohbette bildiririz.
  • Yeniden yapım veya tam iadeSonuç brifinize uymuyorsa ve revizyonlar sorunu çözmediyse ya da iş teslim süresinin iki katından uzun sürerse sipariş sohbetine yazın: işi yeniden yaparız veya ödemenin tamamını iade ederiz.
Nasıl çalışır →

Sorular ve yanıtlar

Bu web analitiğiyle aynı şey mi?

Hayır. Sunucunun gördüğünü sayar: tarayıcılardan ve betiklerden gelenler dahil her isteği, çerez ya da izleme kodu olmadan. Rakamlar analitik servisinizden farklı olur ve her bakış açısı kendi yolunda faydalıdır.

Ziyaretçilerin IP adresleri ne olacak?

Birçok ülkede kişisel veri sayılırlar, bu yüzden rapor onları varsayılan olarak dışarıda bırakır. Örneğin siteyi istek yağmuruna tutan bir adresi görmek için ihtiyacınız varsa kısaltılabilirler.

Kötü niyetli ziyaretçileri engelleyebilir mi?

Hayır. Yalnızca log'ları okur ve rapor hazırlar; sunucunuzun ayarlarını ya da güvenlik duvarını değiştirmez.

Log'larımı siz mi okuyacaksınız?

Hayır. Betiği kendi tarafınızda çalıştırırsınız. Bize yalnızca format satırı ve adresleri değiştirilmiş birkaç satır gerekir.

Yanıtınızı bulamadınız mı?

Paketler