Timber kutubxonasi bilan tanishamiz

Timber kutubxonasi bilan tanishamiz

Timber kutubxonasi bilan tanishamiz

Android ilovalarini ishlab chiqishda biz dasturchilar turli xil maqsadga ega bo’lgan juda ko’p loglarni yozishga majbur bo’lamiz va buning uchun bizga Android SDK ichida mavjud bo’lgan Log class va uning metodlari yordam beradi.

Masalan, biz xatoni aniqlamoqchi bo’lgan holatlarda quyidagi kodni ishga tushiramiz:

Log.e(TAG,"Xatolik yuz berdi")

Ushbu xabar bizning Android Studio dasturimizning Logcat oynasida qizil rangda namoyon bo’ladi. Qayerda qanday qiymat borligini aniqlash yoki shunchaki biror qiymatni ko’rish maqsadida esa biz odatda quyidagi ko’rinishda kod yozamiz:

Log.d(TAG, “Kod xatosiz ishladi")

Barchasi oddiy shunday emasmi?

Endi keling nega bu holatni o’zi bizga yetarli bo’lmasligi va aynan Timber kutubxonasi bizga qanday imkoniyatlarni taqdim etishi haqida to’xtalamiz.

Odatda, dasturni ishlab chiqish tugallangandan so’ng va ilovani Google Play yoki boshqa platformaga chiqarish vaqti kelganida,
foydalanuvchi ma’lumotlari, yashirin ilova ma’lumotlari, auth-tokenlar kabi ilova ma’lumotlarining hech biri bo’lmasligi uchun ilovadan barcha biz yozgan loglarni olib tashlashimiz kerak. Bir necha ming yoki millionlab qator kodga ega dasturdan esa bularning barchasini olib tashlash juda ham qiyin vazifaga aylanadi.
Ammo ushbu muammoni hal qilishning bir necha yo’llari mavjud:

1. Booleanga asoslangan loglar

Bunda biz quyidagi kod blokidagi kabi ApplicationController classida umumiy statik bo’lgan boolean toifasidagi o’zgaruvchini yaratishimiz mumkin:

package com.death.timberdemo;

import android.app.Application;

public class ApplicationController extends Application {

    public static boolean isDebug;
    @Override
    public void onCreate() {
        super.onCreate();
        isDebug = true;
    }
}

va ushbu o’zgaruvchi qiymatini quyidagi kod blokidagi kabi log yozish jarayonida tekshirish sifatida foydalanish mumkin:

package com.death.timberdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if(ApplicationController.isDebug){
            Log.e(TAG, "Some message");
        }

    }
}

Ushbu holatda biz boolean o’zgaruvchidan log xabarini qo’ymoqchi bo’lgan barcha classlarda foydalanishimizga to’g’ri keladi va ilova tayyor bo’lganidan so’ng, ApplicationController classida
isDebug = false ni qilinadigan bo’lsa biz yuqorida ta’kidlangan muammoni hal etgan bo’lamiz. Ammo, ushbu yondashuv qo’shimcha kod yozishni talab etadi. Bunga esa Androidning o’zi tomonidan yaratilgan konfiguratsiyasi yordamida erishish mumkin. Uning uchun esa boolean o’zgaruvchi o’rniga BuildConfig.DEBUG qilib ishlatishning o’zi kifoya.

2. Proguard

Bu yondashuv ham ushbu muammoning yechimidir. Biz Log classidagi metodlarini dastur ommaga taqdim etilishidan avval relizlar tarkibidan olib tashlashimiz mumkin. Buning uchun esa, quyidagi kodni proguard rules fayliga yozishimiz kerak bo’ladi:

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** e(...);
}

Proguard haqida
quyidagi maqolada batafsil ma’lumotga ega bo’lishingiz mumkin

Yuqoridagi muammolarni oson hal qilishning eng yaxshi yechimi esa Timber kutubxonasidan foydalanish.

Timber — boshqarish juda sodda va yengil kutubxona bo’lib, u sizning loglaringizni boshqarish imkonini beradi. Ushbu kutubxona ajoyib dasturchi
Jake Wharton tomonidan ishlab chiqilgan.

Loyihaga Timberni qo’shish:

Android studio loyihangizga Timberni qoʻshish uchun quyidagi qatorni
/app/build.gradle fayliga yozing va loyihani sinxronlang.

implementation 'com.jakewharton.timber:timber:4.7.1'

Loyiha sinxronlashtirilgandan so’ng, ApplicationController classida Timberni github sahifasidagi ko’rsatmalarga muvofiq tarzda yaratamiz:

package com.death.timberdemo;

import android.app.Application;

import timber.log.Timber;

public class ApplicationController extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if(BuildConfig.DEBUG){
            Timber.plant(new Timber.DebugTree());
        }
    }
}

Bu yerda Timber.DebugTree() metodi yordamida biz loglarni faqat loyihaning Debug holati, ya’ni biz relizdan oldingi jarayonlarimizda ko’rsatishini belgilab qo’ydik.

Va biz Timberdan foydalanish uchun qilishimiz kerak bo’lgan barcha ishni qildik. Endi qayerda bo’lsangiz ham quyidagi holatda ishlatishning o’zi kifoya:

Timber.e("Xatolik");        
Timber.d("Xabar");

Yuqoridagi kod ko’rib turganingizdek, Timber.d(…) yoki Timber.e(…) tarzida foydalanilmoqda va
tag parametriga hech narsa yozish shart emas, chunki Timber avtomatik ravishda loglarni qaysi class ekanligini aniqlaydi va class nomini tag sifatida oladi.

Agarda sizga o’zingiz xohlagan tag kerak bo’lsa unda quyidagi misol yordamida foydalanasiz:

Timber.tag("Xatolik").e("Tizimda xatolik yuz berdi");

Tabriklaymiz! Endi siz Timber kutubxonasi yordamida loglar yoza olasiz!

Timber haqida ko’proq ma’lumotga ega bo’lishni istasangiz quyidagi linkdan foydalaning.

🤝 Bilim ulashish yo’lida bu maqolani dasturlashga qiziquvchilar bilan bo’lishing.

Manba:

Android Dasturlash
Timber kutubxonasi bilan tanishamiz

Оставьте комментарий