نمونههای کد سرویسهای SDV Core در /system/software_defined_vehicle/samples شما را قادر میسازد تا ساخت سرویسهای خود را شروع کنید. هر نمونه شامل یک فایل README است که مورد استفاده را شرح میدهد.
از API ثبت وقایع استفاده کنید
برای آشنایی بیشتر با دستورالعملهای ارائه شده، به موارد زیر مراجعه کنید:
نمونه لاگ پایه
logging.cpp نوشتن در بافرهای main ، system و radio را ارائه میدهد. برای مطالعهی شرح مختصری از بافرهای لاگ موجود، به بخش «مشاهدهی بافرهای لاگ جایگزین» مراجعه کنید.
برای اجرای نمونه بدون گزارشهای شرطی، مانند
ALOGI_IF:logging_sdv_sampleبرای اجرای نمونه و چاپ گزارشهای شرطی، مانند
ALOGI_IF:LOGIF=1 logging_sdv_sample
نمونه ثبت وقایع ساختاریافته
فایل نمونه: structured_logging.cpp
برای اجرای نمونه، که گزارشها را در بافر گزارش
eventsمینویسد:structured_logging_sdv_sample
بافرهای لاگ event ، security و stats ، دادههای ساختاریافته را به جای متن آزاد نگهداری میکنند.
دادههای ساختاریافته با استفاده از API لیست رویدادها ثبت میشوند، که همیشه با اولویت INFO و شناسه برچسب عددی ثبت میشوند.
یک فایل .logtags میتوان با ویژگی logtags در Android.bp. در صورت وجود، logcat از این برای استخراج نام برچسب از شناسه عددی برچسب استفاده میکند. سپس میتوان از نام برچسب برای فیلتر کردن گزارشهای ساختاریافته استفاده کرد. برای جزئیات و شرح فرمت فایل، به توضیحات موجود در فایل logcat event.logtags مراجعه کنید.
در طول فرآیند ساخت، تمام فایلهای logtags ادغام شده و در فایل /system/etc/event-log-tags در تصویر سیستم اندروید قرار میگیرند.
یک نمونه فیلتر کردن گزارش زمانی را کامپایل کنید
فایل نمونه: compile_time_log_filtering.cpp
این نمونه شامل ماکروهایی است که میتوانید برای حذف برخی از گزارشها از فایل اجرایی تنظیم کنید. برای جزئیات بیشتر به کد منبع مراجعه کنید.
نمونه فیلتر کردن لاگ: log_filtering.cpp
برای اجرای نمونه، اولویت حداقل گزارش را روی
WARNتنظیم کنید:LOGLEVEL=WARN log_filtering_sdv_sample
فیلتر کردن لاگها تحت تأثیر ویژگیهای سیستم قرار دارد. برای همه لاگها با
-
log.tag.<tag> -
persist.log.tag.<tag>
برای همه گزارشهای ثبتشده در سیستم:
-
log.tag -
persist.log.tag
برای انتخاب سطح لاگ انتخاب شده، که به ترتیب بررسی میشوند، میتوان هر مقدار را روی V ، D ، I ، W یا E تنظیم کرد.
سطح ثبت وقایع مؤثر، سطحی است که روی اولین ویژگی سیستمی که مقداری دارد تنظیم میشود، که میتواند کمتر یا بیشتر از سطح ثبت وقایعی باشد که توسط برنامه با فراخوانی __android_log_set_minimum_priority تنظیم شده است. وقتی هیچ یک از ویژگیها تنظیم نشده باشند، سطح پیکربندی شده با __android_log_set_minimum_priority اعمال میشود.
برای جزئیات بیشتر، به نمای کلی سیستم ثبت وقایع مراجعه کنید.
نمونه را اجرا کنید و تگ پیشفرض لاگ را روی
example_tagتنظیم کنید:LOGTAG=example_tag log_filtering_sdv_sample
این نمونه همچنین شامل یک تعریف ماکروی LOG_TAG کامنتگذاری شده است که میتوانید از آن برای تنظیم تگ لاگ برای همه پیامهای لاگ استفاده کنید. تگی که به این روش تنظیم میشود، تگی را که در زمان اجرا با __android_log_set_default_tag تنظیم شده است، لغو میکند.
اگر ماکروی LOG_TAG تعریف نشده باشد و برنامه __android_log_set_default_tag را فراخوانی نکند، تگ پیشفرض نتیجهی getprogname() خواهد بود. برای مثال، نام فایل اجرایی.