لقد تم تكليفك بتنفيذ نظام تسجيل لتطبيق برمجي. يجب أن يكون لنظام التسجيل مستويات مختلفة من التسجيل، بما في ذلك التصحيح والمعلومات والتحذير والخطأ. يجب أن يتضمن كل إدخال سجل الطابع الزمني الحالي ورسالة السجل.

قم بتنفيذ فئة "المسجل" بالطرق التالية:

- `debug(message: str)`: يسجل رسالة بمستوى التصحيح.
- `info(message: str)`: يسجل رسالة بمستوى INFO.
- `warning(message: str)`: يسجل رسالة بمستوى تحذير.
- `خطأ(رسالة: شارع)`: يسجل رسالة بمستوى الخطأ.

يجب أن تحتوي فئة "المسجل" على سمة "السجلات"، وهي قائمة بجميع إدخالات السجل.

بالإضافة إلى ذلك، قم بتطبيق فئة "FileLogger" التي تعمل على توسيع فئة "المسجل". يجب أن يقوم FileLogger بكتابة إدخالات السجل إلى ملف. يجب أن يحتوي "FileLogger" على سمة "اسم الملف" التي تحدد اسم ملف السجل.

يجب أن تبدأ فئة "FileLogger" بمقتطف التعليمات البرمجية التالي:

```بيثون
فئة FileLogger (المسجل):
    تعريف __init__(الذات، اسم الملف):
        سوبر ().__init__()
        اسم الملف الذاتي = اسم الملف

    Def write_log(self, Level, message):
        الطابع الزمني = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        log_entry = f"{الطابع الزمني} [{المستوى}] - {الرسالة}\n"
        مع open(self.filename, "a") كملف:
            file.write(log_entry)
```

يلزمك التأكد من أنه عند استدعاء الأساليب `debug(message: str)` أو `info(message: str)` أو `warning(message: str)` أو `error(message: str)` الخاصة بـ FileLogger `، تتم كتابة رسالة السجل إلى الملف المحدد بواسطة السمة `اسم الملف`.

قم بإنشاء كائن "FileLogger" مع تعيين اسم الملف على "app.log" واستخدمه لتسجيل الرسائل التالية:

1. التصحيح: "القراءة: file1.txt"
2. معلومات: "تم فتح الملف بنجاح"
3. تحذير: "حجم الملف يتجاوز الحد الموصى به"
4. خطأ: "فشل حفظ الملف"

اكتب فئة "FileLogger" التي تطبق المتطلبات المذكورة أعلاه.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}