آموزش RxJava با مثال های کاربردی
کتابخانه RxJava را کاربردی بیاموزیم
1397-11-13
همه آن چیزی که باید درباره گیت بدانید
همه آن چیزی که باید درباره گیت (Git) بدانید – بخش اول
1397-11-20

کتابخانه Timber برای گرفتن لاگ بهتر در اندروید

کتابخانه timber برای گرفتن لاگ بهتر در اندروید

کتابخانه timber برای گرفتن لاگ بهتر در اندروید

کتابخانه timber ، در این پست به صورت کامل به کتابخانه timber از Jake Wharton میپردازیم.
به اختصار این کتابخانه را ما بجای کلاس Log پیشفرض خود اندروید که بصورت کامل android.util.log میباشد.
اما دلیل جایگزینی این کتابخانه این ست که میتوان لاگ هارا خیلی کاستومایز یا به عبارت دیگر سفارشی سازی شده تر پیاده کرد که در این پست نمونه هایی از کاستوم کردن لاگ log یا گرفتن لاگ بهتر در اندروید رو با مثال خواهیم دید

آموزش کتابخانه timber برای گرفتن لاگ سفارشی در اندروید

به گفته خود نویسنده

A logger with a small, extensible API which provides utility on top of Android’s normal Log class.

یک لاگر logger با یک Api کوچک و قابل گسترش که میتواند ابزارها (لاگ ها) در بالای لاگ های نرمال کلاس های اندروید نمایش دهد.

برای اضافه کردن یک instance یا نمونه از کتابخانه timber کافیه که بدین صورت کد بزنیم

Timber.plant(Tree)

که بهترین مکان برای فراخوانی این کد در کلاس Application برنامه و onCreate آن ست
پیاده سازی DebugTree به طور خودکار برای هرکلاس که کد فوق را پیاده کرد باشد انجام میشود و همچنین نام کلاس به عنوان Tag لاگ نیز ذکر میشود.

مراحل استفاده کتابخانه Timber

مراحل استفاده نیز خیلی ساده ست

  1. پیاده سازی هر نوع instance مربوط به Tree در کلاس Application برنامه
  2. فراخوانی متدهای استاتیک Timber در هرکجای اپ برای لاگ کردن

دو مرحله فوق رو کمی واضح تر درادامه پست توضیح خواهیم داد

۱- یک پروژه اندروید بسازید (من از زبان کاتلین استفاده میکنم اما این کتابخانه با هر دو زبان جاوا و کاتلین کاملا سازگاره ! )
و وابستگی یا dependency زیر رو اضافه کنید و در نهایت sync

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

۲- حالا یک کلاس که از Application ارث بری میکنه بسازید و تکه کد plant کتابخانه timber رو به اون اضافه کنید به صورت زیر

package dn.marjan.timbersample

import android.app.Application 
import timber.log.Timber
 
import timber.log.Timber.DebugTree

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate() 
        Timber.plant(DebugTree())
    }
 
}

کلاس DebugTree مربوط به خود کتابخانه timber هست اما میتونیم هر کلاس کاستومایز شده دیگه ای که از Timber.Tree ارث بری کنه رو بسازیم و ساختار لاگ رو بسته به سلیقه خودمون پیاده کنیم !
کلاس اپلیکیشن رو همچنین در منیفست برنامه بصورت زیر در تگ application مشخص خواهیم کرد

 <application
android:name=".MyApplication"
…

۳- در نهایت اکتیویتی که زمان ساخت پروژه ایجاد شده را به صورت زیر تغییر میدیم

package dn.marjan.timbersample

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.demo_activity.*
import timber.log.Timber

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        Timber.i("onCreate")
        super.onCreate(savedInstanceState)
        setContentView(R.layout.demo_activity)
//        Timber.tag("LifeCycles")
//        Timber.d("Activity Created")

        btn_hello.setOnClickListener { greetingClicked("btn_hello") }
        btn_hey.setOnClickListener { greetingClicked("btn_hey") }
        btn_hi.setOnClickListener { greetingClicked("btn_hi") }

    }

    fun greetingClicked(btnText: String) {
        Timber.i("A button with clicked to say '$btnText'.") 
        Toast.makeText(this, "Check logcat for a greeting!", Toast.LENGTH_SHORT).show()
    }
  override fun onStart() {
      Timber.i("onStart")
      super.onStart()
  }

    override fun onRestart() {
        Timber.i("onRestart")
        super.onRestart()
    }

    override fun onResume() {
        Timber.i("onResume")
        super.onResume()
    }

    override fun onPause() {
        Timber.i("onPause")
        super.onPause()
    }

    override fun onDestroy() {
        Timber.i("onDestroy")
        super.onDestroy()
    }
}

توجه کنید که لاگ هایی که ایجاد شده صرفا برای مشاهده لاگ بیشتر در لاگ کت هستش 🙂
پس از اجرای برنامه لاگ کت بصورت زیر خواهد بود

کتابخانه timber برای گرفتن لاگ بهتر در اندروید
کتابخانه timber برای گرفتن لاگ بهتر در اندروید

همونطور که میبینید نام اکتیوتی که در اون لاگ ایجاد کردیم بصورت اتوماتیک برای tag ست شده MainActivity
همچنین با کلیک هرکدام از دکمه ها لاگی که نوشته شده نیز ایجاد میشود.

به همین سادگی کار با کتابخانه Timber رو یاد گرفتیم 😀

اما میتونیم کمی لاگ ها رو کاستومایز تر کنیم
بدین صورت که کلاس DebugTree رو بصورت زیر تغییر بدیم

 class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
        Timber.plant(object : DebugTree(){
            override fun createStackElementTag(element: StackTraceElement): String? {
                return super.createStackElementTag(element) + " ${element.className}  ${element.fileName} ${element.lineNumber} "
            }
        })
}

همونطور که میبینید این کلاس همچین اختیاراتی رو به ما میده که به برخی خصوصیات کلاسی که در اون با کتابخانه Timber لاگ ایجاد شده دسترسی کامل داشته باشیم مثل خطی که لاگ ایجادشده
مسیر کامل ونام کلاسی و همچنین نام فایل به تنهایی
حالا اگر پروژه رو ران کنیم اطلاعات در لاگ کت بصورت زیر تغییر خواهد کرد

کتابخانه timber برای گرفتن لاگ بهتر در اندروید
کتابخانه timber برای گرفتن لاگ بهتر در اندروید

امیدوارم این پست براتون مفید بوده باشه و ازش استفاده کنید. از طریق راه های ارتباطی زیر میتونید با ما برای درخواست آموزش های اختصاصی و انواع پروژه ها در ارتباط باشید.


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *