تسجيل الدخول في تطبيقات Kotlin: أفضل الممارسات للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تسجيل الدخول في تطبيقات Kotlin: أفضل الممارسات للمبتدئين

\n\n

تسجيل الدخول ليس مجرد كتابة رسائل في ملف. إنه نظام يساعد المطور على فهم ما يحدث في التطبيق في الوقت الفعلي، والعثور بسرعة على الأخطاء وتحليل سلوك المستخدمين. في هذه المقالة، سنشرح كيفية تنظيم تسجيل الدخول بشكل صحيح في تطبيقات Kotlin، وما هي المكتبات التي يجب استخدامها، وما الأخطاء التي يجب تجنبها.

\n\n

لماذا نحتاج إلى تسجيل الدخول؟

\n

يحل تسجيل الدخول عدة مهام رئيسية:

\n
    \n
  • التصحيح: يسمح برؤية تسلسل الاستدعاءات وقيم المتغيرات دون استخدام مصحح الأخطاء.
  • \n
  • المراقبة: يساعد في تتبع حالة التطبيق في بيئة الإنتاج.
  • \n
  • التدقيق: يسجل إجراءات المستخدمين والأحداث النظامية.
  • \n
  • الأداء: بمساعدة السجلات، يمكن اكتشاف الاختناقات والتأخيرات.
  • \n
\n\n

المكتبات الشائعة لتسجيل الدخول في Kotlin

\n

في نظام Kotlin وJVM البيئي، توجد عدة حلول موثوقة. دعنا نستعرض الأساسية منها:

\n
    \n
  • SLF4J (Simple Logging Facade for Java) — واجهة لا تقوم بتسجيل الدخول بنفسها، ولكنها توفر واجهة برمجة تطبيقات موحدة لتطبيقات مختلفة (Logback، Log4j2 وغيرها).
  • \n
  • Logback — التطبيق الأكثر شيوعًا لـ SLF4J. سريع ومرن ويدعم الملفات الدوارة.
  • \n
  • Log4j 2 — مكتبة قوية تدعم تسجيل الدخول غير المتزامن والتصفية.
  • \n
  • Kotlin Logging — غلاف مناسب لـ SLF4J، يستخدم دوالًا مضمنة لتقليل التكاليف الإضافية.
  • \n
\n\n

إعداد Logback في مشروع Kotlin

\n

دعنا نستعرض الإعداد خطوة بخطوة لـ Logback - الحل الأكثر شيوعًا لتطبيقات Kotlin/JVM.

\n\n

الخطوة 1: إضافة التبعيات

\n

في ملف build.gradle.kts، أضف:

\n
dependencies {\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n    implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")\n}
\n\n

الخطوة 2: إنشاء ملف التكوين

\n

أنشئ ملف src/main/resources/logback.xml:

\n
<configuration>\n    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">\n        <file>logs/app.log</file>\n        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\n            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>\n            <maxHistory>30</maxHistory>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <root level="INFO">\n        <appender-ref ref="CONSOLE"/>\n        <appender-ref ref="FILE"/>\n    </root>\n</configuration>
\n

يقوم هذا التكوين بإخراج السجلات إلى وحدة التحكم وإلى ملف مع تدوير يومي (يتم الاحتفاظ بالسجلات لمدة 30 يومًا).

\n\n

الخطوة 3: الاستخدام في الكود

\n

دعنا نستخدم مكتبة kotlin-logging:

\n
import mu.KotlinLogging\n\nprivate val logger = KotlinLogging.logger {}\n\nfun main() {\n    logger.info("تم تشغيل التطبيق")\n    logger.debug { "قيمة المتغير x = $x" }\n    try {\n        // بعض الكود\n    } catch (e: Exception) {\n        logger.error(e) { "حدث خطأ أثناء تنفيذ العملية" }\n    }\n}
\n\n

مستويات تسجيل الدخول: متى تستخدم ماذا

\n

الاختيار الصحيح للمستوى هو أساس السجلات القابلة للقراءة. في Logback، تتوفر المستويات التالية

المدونات

توصيات الكتب