Contoh kode inti

Contoh kode layanan Inti SDV di /system/software_defined_vehicle/samples memungkinkan Anda mulai membuat layanan. Setiap contoh berisi file README yang menjelaskan kasus penggunaan.

Menggunakan Logging API

Untuk mempelajari petunjuk yang diberikan lebih lanjut, lihat:

Contoh log dasar

logging.cpp menyajikan penulisan ke buffer main, system, dan radio. Untuk membaca deskripsi singkat tentang buffer log yang tersedia, lihat Menampilkan buffer log alternatif.

  • Untuk menjalankan contoh tanpa log bersyarat, seperti ALOGI_IF:

    logging_sdv_sample
    
  • Untuk menjalankan contoh dan mencetak log bersyarat, seperti ALOGI_IF:

    LOGIF=1 logging_sdv_sample
    

Contoh logging terstruktur

File contoh: structured_logging.cpp

  • Untuk menjalankan contoh, yang menulis log ke buffer log events:

    structured_logging_sdv_sample
    

Buffer log event, security, dan stats menyimpan data terstruktur, bukan teks bebas.

Data terstruktur dicatat menggunakan event list API, yang selalu dicatat dengan prioritas INFO dan ID tag numerik.

File .logtags dapat ditentukan dengan atribut logtags di Android.bp. Jika disediakan, logcat akan menggunakannya untuk mendapatkan nama tag dari ID tag numerik. Nama tag kemudian dapat digunakan untuk memfilter log terstruktur. Untuk mengetahui detail dan deskripsi format file, lihat komentar di logcat event.logtags file.

Selama proses build, semua file logtags akan digabungkan dan ditempatkan ke dalam file /system/etc/event-log-tags di image sistem Android.

Mengompilasi contoh pemfilteran log waktu

File contoh: compile_time_log_filtering.cpp

Contoh ini berisi makro yang dapat Anda sesuaikan untuk menghapus beberapa log dari file yang dapat dieksekusi. Lihat kode sumber untuk mengetahui detailnya.

Contoh pemfilteran log: log_filtering.cpp

  • Untuk menjalankan contoh, menetapkan prioritas log minimum ke WARN:

    LOGLEVEL=WARN log_filtering_sdv_sample
    

Pemfilteran log dipengaruhi oleh properti sistem. Untuk semua log dengan :

  • log.tag.<tag>
  • persist.log.tag.<tag>

Untuk semua log dalam sistem:

  • log.tag
  • persist.log.tag

Untuk memilih tingkat log yang dipilih, yang diperiksa secara berurutan, setiap nilai dapat ditetapkan ke V, D, I, W, atau E.

Tingkat log efektif adalah tingkat yang ditetapkan pada properti sistem pertama yang memiliki nilai, yang mungkin lebih rendah atau lebih tinggi dari tingkat log yang ditetapkan oleh aplikasi dengan panggilan __android_log_set_minimum_priority. Jika tidak ada properti yang ditetapkan, tingkat yang dikonfigurasi dengan __android_log_set_minimum_priority akan diterapkan.

Untuk mengetahui detailnya, lihat Ringkasan sistem Logging.

  • Jalankan contoh, tetapkan tag log default ke example_tag:

    LOGTAG=example_tag log_filtering_sdv_sample
    

Contoh ini juga berisi definisi makro LOG_TAG yang dikomentari yang dapat Anda gunakan untuk menetapkan tag log untuk semua pesan log. Tag yang ditetapkan dengan cara ini akan mengganti tag yang ditetapkan saat runtime dengan __android_log_set_default_tag.

Jika makro LOG_TAG tidak ditentukan dan aplikasi tidak memanggil __android_log_set_default_tag, tag default adalah hasil dari getprogname(). Misalnya, nama file yang dapat dieksekusi.