Temel kod örnekleri

/system/software_defined_vehicle/samples içindeki SDV Core Services kod örnekleri, hizmetlerinizi oluşturmaya başlamanızı sağlar. Her örnekte, kullanım alanını açıklayan bir README dosyası bulunur.

Logging API'yi kullanma

Verilen talimatlar hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın:

Temel günlük örneği

logging.cpp, system ve radio arabelleklerine yazma işlemi sunar. Kullanılabilir günlük arabelleklerinin kısa bir açıklamasını okumak için Alternatif günlük arabelleklerini görüntüleme başlıklı makaleyi inceleyin.main

  • Örneği koşullu günlükler olmadan çalıştırmak için (ör. ALOGI_IF):

    logging_sdv_sample
    
  • Örneği çalıştırmak ve ALOGI_IF gibi koşullu günlükleri yazdırmak için:

    LOGIF=1 logging_sdv_sample
    

Yapılandırılmış günlük kaydı örneği

Örnek dosya: structured_logging.cpp

  • Günlükleri events günlük arabelleğine yazan örneği çalıştırmak için:

    structured_logging_sdv_sample
    

event, security ve stats günlük arabellekleri, serbest metin yerine yapılandırılmış verileri tutar.

Yapılandırılmış veriler, her zaman INFO önceliği ve sayısal etiket kimliğiyle kaydedilen etkinlik listesi API'si kullanılarak kaydedilir.

.logtags dosyası, Android.bp. içinde logtags özelliğiyle tanımlanabilir. Sağlandığında logcat, etiketin adını sayısal etiket kimliğinden türetmek için bunu kullanır. Etiket adı daha sonra yapılandırılmış günlükleri filtrelemek için kullanılabilir. Ayrıntılar ve dosya biçiminin açıklaması için logcat event.logtags dosyasındaki yoruma bakın.

Derleme işlemi sırasında tüm logtags dosyaları birleştirilir ve Android sistem görüntüsündeki /system/etc/event-log-tags dosyasına yerleştirilir.

Zaman günlüğü filtreleme örneği derleme

Örnek dosya: compile_time_log_filtering.cpp

Bu örnek, yürütülebilir dosyadan bazı günlükleri kaldırmak için ayarlayabileceğiniz makrolar içerir. Ayrıntılar için kaynak koduna bakın.

Günlük filtreleme örneği: log_filtering.cpp

  • Örneği çalıştırmak için minimum günlük önceliğini WARN olarak ayarlayın:

    LOGLEVEL=WARN log_filtering_sdv_sample
    

Günlük filtreleme, sistem özelliklerinden etkilenir. içeren tüm günlükler için:

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

Sistemdeki tüm günlükler için:

  • log.tag
  • persist.log.tag

Sırayla kontrol edilen seçili günlük düzeyini belirlemek için her değer V, D, I, W veya E olarak ayarlanabilir.

Geçerli günlük düzeyi, değer içeren ilk sistem özelliğinde ayarlanan düzeydir. Bu düzey, __android_log_set_minimum_priority çağrısıyla uygulama tarafından ayarlanan günlük düzeyinden daha düşük veya daha yüksek olabilir. Özelliklerin hiçbiri ayarlanmadığında __android_log_set_minimum_priority ile yapılandırılan düzey geçerli olur.

Ayrıntılar için Günlük sistemi genel bakışı başlıklı makaleyi inceleyin.

  • Varsayılan günlük etiketini example_tag olarak ayarlayarak örneği çalıştırın:

    LOGTAG=example_tag log_filtering_sdv_sample
    

Örnekte, tüm günlük mesajları için günlük etiketini ayarlamak üzere kullanabileceğiniz yorum satırı haline getirilmiş bir LOG_TAG makro tanımı da yer alır. Bu şekilde ayarlanan etiket, çalışma zamanında __android_log_set_default_tag ile ayarlanan etiketi geçersiz kılar.

LOG_TAG makrosu tanımlanmamışsa ve uygulama __android_log_set_default_tag işlevini çağırmıyorsa varsayılan etiket, getprogname() işlevinin sonucudur. Örneğin, yürütülebilir dosyanın adı.