تقرير سجلات الخادمالتطوير والتخصيص

سكربت Python يقرأ سجلات الوصول لخادم الويب لديك ويحوّلها إلى تقرير واضح بالصفحات والأخطاء

جاهز عادةً خلال 15 دقيقةالتعديلات مشمولةفحص الجودة
الباقات
حماية الدفعالتفاصيل
  • التعديلات ضمن الباقة مجانية.
  • إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.

يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

سكربت Python يقرأ سجلات الوصول لخادم الويب لديك ويحوّلها إلى تقرير واضح بالصفحات والأخطاء

مثال على النتيجة

مثال على الباقة القياسية

دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد

طريقة التشغيل

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO  shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN  shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO  تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)

إعدادات لا كود

أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:

[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة

جزء من الكود

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
    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}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.

العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.

العميل وجميع التفاصيل افتراضية.

عن هذه الخدمة

يدوّن خادم الويب لديك كل طلب في سجل الوصول، لكن ملفًا من ملايين الأسطر لا يخبرك بالكثير حتى يُحصى. يقرأ سكربت Python هذا سجلات الوصول لـ Nginx أو Apache، بما في ذلك القديمة المضغوطة، ويُعدّ تقريرًا: الطلبات حسب اليوم والساعة، والصفحات الأكثر زيارة، ورموز الحالة، والصفحات التي تُرجع 404 أو 500، ومن أين جاء الزوار. وفي الباقة المميزة يحسب زواحف محركات البحث بمعزل عن البشر، ويحفظ مصنف Excel بتبويب لكل قسم. تبقى عناوين IP للزوار خارج التقرير افتراضيًا، أو تُختصر إن احتجت إليها. أرسل إلينا سطر تنسيق السجل من إعدادات خادمك و20-30 سطرًا بعد تغيير العناوين. تشغّله على خادمك أو جهازك؛ وهو يقرأ السجلات ولا يغيّر أي إعدادات.

ما المشمول

  • ما الذي تحصل عليهأرشيف ZIP يضم سكربت Python وملف README بتعليمات خطوة بخطوة، ومن الباقة القياسية ملف إعدادات بمسارات السجلات وخيارات التقرير؛ ويُعرض الكود أيضًا في صفحة الطلب.
  • Nginx وApacheتنسيقات السجلات الشائعة، أو تنسيقك إن كان مختلفًا
  • الأخطاء مع صفحاتهاأي العناوين تعطي 404 أو 500، وكم مرة
  • السجلات القديمة أيضًابدءًا من الباقة القياسية، تُقرأ ملفات ‎.gz المضغوطة كما هي
  • بلا بيانات شخصيةعناوين IP مستبعدة أو مختصرة
  • كود مقروءمع تعليقات، ليسهل إضافة قسم لاحقًا

كيف يعمل

  1. 1
    المهمةترسل تنسيق السجل وبضعة أسطر بعد تغيير العناوين
  2. 2
    الكودنكتب السكربت ودليل تشغيله
  3. 3
    جرّبهتشغّله على نسخة من سجل يوم واحد وتراجع التقرير
  4. 4
    التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ

ما نحتاجه منك

خادم الويب لديك (Nginx أو Apache)، وسطر log_format أو LogFormat من إعداداته إن كان قد تغيّر، و20-30 سطرًا من سجل الوصول بعد استبدال عناوين IP بعناوين مختلقة. أين تُحفظ السجلات وكيف تُدوَّر، وحجم سجل اليوم الواحد، وما يجب أن يعرضه التقرير وبأي شكل (CSV أو Excel)، وأين سيعمل: على الخادم نفسه (مع نظامه) أم على جهازك.

سنسألك:

  • أي خادم ويب وأي تنسيق للسجل؟
  • ما الذي يجب أن يعرضه التقرير؟
  • كم مرة تحتاج إليه؟
  • أين سيعمل؟

قارن بين الباقات

الباقاتالأساسيةسجل واحد، تقرير واحد‏16 US$القياسيةالتقرير مع الإعدادات‏33 US$المميزةأداة تقارير السجلات‏67 US$
مدة التنفيذ1 يوم2 يوم3 أيام
التعديلات123
الكودحتى 150 سطرًاحتى 400 سطرحتى 1,000 سطر
ملفات الكود1حتى 3حتى 8
ملف الإعداداتلانعمنعم
رسائل خطأ واضحة وسجللانعمنعم
خيارات التشغيل ودليل لتشغيله وفق جدول زمنيلالانعم
دليل التثبيت والتشغيل (README)نعمنعمنعم
اللغةPythonPythonPython
اطلب الأساسيةاطلب القياسيةاطلب المميزة

حماية الدفع

تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.

  • سعر ثابتلا يتغير سعر الباقة بعد الدفع.
  • المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
  • فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
  • تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
  • القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
  • إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
كيف يعمل →

الأسئلة والأجوبة

هل هذا مثل تحليلات الويب؟

لا. يحسب ما رآه الخادم: كل طلب، بما في ذلك طلبات الزواحف والسكربتات، بلا ملفات تعريف ارتباط ولا كود تتبع. ستختلف الأرقام عن خدمة التحليلات لديك، ولكل منظور فائدته.

ماذا عن عناوين IP للزوار؟

تُعد بيانات شخصية في بلدان كثيرة، لذا يستبعدها التقرير افتراضيًا. إن احتجت إليها، مثلًا لرصد عنوان واحد يُغرق الموقع بالطلبات، فيمكن اختصارها.

هل يمكنه حظر الزوار المسيئين؟

لا. يكتفي بقراءة السجلات وإعداد تقرير؛ ولا يغيّر إعدادات خادمك أو جدار الحماية.

هل ستقرؤون سجلاتي؟

لا. تشغّل السكربت من جهتك. نحتاج فقط إلى سطر التنسيق وبضعة أسطر بعد تغيير العناوين.

لم تجد إجابتك؟

الباقات