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

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

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

ابدأ الدورة

تسجيل السجلات في تطبيقات Kotlin: أفضل الممارسات



تسجيل السجلات ليس مجرد كتابة رسائل في وحدة التحكم. في تطبيقات Kotlin الحديثة (من Android إلى الخلفية على Ktor أو Spring Boot)، تصبح السجلات المصدر الرئيسي للمعلومات لتصحيح الأخطاء والمراقبة والتدقيق. يمكن أن يؤدي تسجيل السجلات غير المهيأ بشكل صحيح إلى فقدان بيانات هامة أو، على العكس، إلى امتلاء القرص. في هذه المقالة، سنستعرض أفضل ممارسات تسجيل السجلات في Kotlin، وننظر في المكتبات الشائعة، ونعرض أمثلة على الكود.



1. اختيار مكتبة لتسجيل السجلات في Kotlin



Kotlin متوافق تمامًا مع نظام Java البيئي، لذلك يمكنك استخدام أي مكتبة Java لتسجيل السجلات. ومع ذلك، هناك أيضًا أغلفة خاصة بـ Kotlin تجعل الكود أكثر اصطلاحية.



  • SLF4J (Simple Logging Facade for Java) — واجهة تسمح بتوصيل تطبيقات مختلفة (Logback, Log4j2, java.util.logging). هذا هو المعيار الفعلي في عالم Java.
  • Logback — التطبيق الأكثر شيوعًا لـ SLF4J. سريع، مرن، مع دعم تسجيل السجلات غير المتزامن.
  • kotlin-logging — غلاف خفيف الوزن فوق SLF4J، يستخدم ميزات Kotlin (الدوال المضمنة، تعبيرات لامدا). يسمح بكتابة الكود بأسلوب logger.debug { "رسالة" }.


المكدس الموصى به لمشروع جديد: SLF4J + Logback + kotlin-logging. مثال على الإضافة في build.gradle.kts:



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


2. مستويات تسجيل السجلات الصحيحة



استخدام المستوى الصحيح هو أساس تسجيل السجلات الجيد. في SLF4J، تتوفر 5 مستويات (حسب تصاعد الخطورة): TRACE, DEBUG, INFO, WARN, ERROR.



  • TRACE — معلومات مفصلة جدًا لتصحيح الأخطاء (الدخول/الخروج من الدوال، قيم المتغيرات). قم بتشغيله فقط في بيئة التطوير.
  • DEBUG — معلومات مفيدة للمطور (حالة النظام، الحسابات الوسيطة).
  • INFO — أحداث هامة في عمل التطبيق (بدء التشغيل، معالجة طلب، الاتصال بقاعدة البيانات).
  • WARN — مواقف يحتمل أن تكون خطيرة (أخطاء غير حرجة، واجهات برمجة تطبيقات قديمة).
  • ERROR — أخطاء تتطلب تدخلاً (استثناءات، أعطال في منطق الأعمال).


مثال على الاستخدام مع kotlin-logging:



import mu.KotlinLogging

private val logger = KotlinLogging.logger {}

fun processOrder(orderId: String) { logger.info { "بدء معالجة الطلب $orderId" } try { // منطق الأعمال logger.debug { "الطلب $orderId: المبلغ = $amount" } } catch (e: Exception) { logger.error(e) { "خطأ أثناء معالجة الطلب $orderId" } }}


هام: تجنب استخدام logger.info("سلسلة " + متغير) — فهذا ينشئ سلسلة حتى لو كان المستوى غير مفعل. استخدم تعبيرات لامدا: logger.info { "سلسلة $متغير" }.



3. تسجيل السجلات المنظم (Structured Logging)



من الصعب تحليل السجلات النصية. من الأفضل استخدام تنسيقات منظمة (JSON, Logstash) تسمح للآلات بتحليل البيانات بسهولة. هذا مهم بشكل خاص للهندسة المعمارية القائمة على الخدمات المصغرة وأنظمة جمع السجلات المركزية (ELK, Grafana Loki).



في Logback، لتنسيق JSON، يتم استخدام مكتبة logstash-logback-encoder:



// build.gradle.ktsimplementation("net.logstash.logback:logstash-logback-encoder:7.4")


تهيئة logback.xml:



<configuration>    <appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">        <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>    </appender>

<root leve

المدونات

توصيات الكتب