حالا درمورد اندروید ولی چطور میشه این کار رو کرد؟ چون اندروید اینطوری نیست که فرضا شما توی جاوا بصورت استاندارد یه چیزی رو بفرستید به stdout (با توابعی مثل print) و یه پنجرهء متنی باز بشه و پیام رو نشون بده.
بخصوص وقتی دارید مثل من با ابزارهای خط فرمان برنامه های اندروید رو توسعه میدید، بلد بودن روش انجام این کار خیلی مهمتره.
در اندروید باید اینطور عمل کرد:
- ابتدا در فایل سورس مورد نظر این رو اضافه کنید:
کد:
import android.util.Log;
کد:
Log.d("custom_tag", "your debug message");
custom_tag یک رشته ای هست که بعدا برای پیدا کردن پیامهای خاص برنامهء شما در بین انبوه پیامهای موجود برنامه های مختلف در سیستم لاگ اندروید، استفاده خواهید کرد.
خب حالا ما چطور پیامهای سیستم لاگ اندروید رو در خط فرمان مشاهده کنیم؟
وقتی دیوایس واقعی یا امولیتور اندروید مورد نظر به سیستم شما اتصال داره این دستور رو بزنید (البته من فرض کردم که فقط یک دیوایس در حال حاضر روی سیستم است):
کد:
adb.exe logcat
حالا ما فقط پیامهای برنامهء خودمون رو چطوری جدا کنیم؟
این دستور:
کد:
adb.exe logcat custom_tag:d *:s
البته این دستور یکسری جزییات و امکانات بیشتری داره ولی من خلاصه مختصر و مفید موارد اصلی و بدردبخور رو گفتم. ولی با این حال بازم بیشتر توضیح میدم (نه کامل). برای اطلاعات کاملش به رفرنس های مربوطه مراجعه کنید.
راستی اونکه نوشتم adb.exe، خواستم مثال خلاصه و تمیز باشه، وگرنه من آیکون این فایل رو از پوشهء android-sdkplatform-tools درگ میکنم به پنجرهء خط فرمان، که اینطوری آدرس مطلقش در اونجا درج میشه و قابل اجرا است. همینطوری اگر بزنید adb یا adb.exe این برنامه اجرا نمیشه، مگر اینکه در مسیر دایرکتوری جاری خط فرمان شما باشه یا دایرکتوریش در متغییر path خط فرمان شما اضافه شده باشه (البته برای ویندوز رو میگم؛ درمورد لینوکس شاید از قبل در مسیر فایلهای اجرایی باشه).
برای اینکه امکانات و ساختار این فرمان دستتون بیاد بیشتر توضیح میدم:
اگر میخواید پیامهای لاگ اندروید رو بطور کلی پاک کنید این دستور رو بزنید:
کد:
adb.exe logcat -c
اگر میخواید فقط پیامهای لاگ دارای سطح Error (و بالاتر) رو مشاهده کنید این دستور رو میزنید:
کد:
adb.exe logcat *:s *:e
کد:
adb.exe logcat *:s *:d
توی برنامهء خودتون هم میتونید پیامهای لاگ در سطوح مختلف رو چاپ کنید (مثالی که من زدم سطح debug بود). مثلا برای چاپ پیام در سطح information از این دستور استفاده می کنید: Log.i برای سطح waing از Log.w و غیره.
اما باید توجه داشت دستور adb.exe logcat custom_tag:d *:s که برای نمایش پیامهای برنامهء خودمون تایپ کردیم، فقط پیامهای سطح debug رو نشون میده؛ به کاراکتر d بعد از تگ custom_tag دقت کنید. بنابراین شما برای نمایش هر سطح از پیامها باید کاراکتر مربوط به اون سطح یا پایین ترش رو مشخص کنید. مثلا اگر من بخوام تمام پیامها در هر سطحی نشون داده بشن، باید از کاراکتر v که معرف سطح verbose است استفاده کنم، چون سطح verbose پایین ترین سطح پیامهای لاگینگ اندروید می باشد.
برچسب:
نویسنده: خنجی