Mit den Codebeispielen für SDV Core-Dienste in /system/software_defined_vehicle/samples können Sie mit der Entwicklung Ihrer Dienste beginnen. Jedes Beispiel enthält eine README-Datei, in der der Anwendungsfall beschrieben wird.
Logging API verwenden
Weitere Informationen zu den Anweisungen finden Sie unter:
Einfaches Logbeispiel
In logging.cpp wird das Schreiben in die Puffer main, system und radio dargestellt.
Eine kurze Beschreibung der verfügbaren Logpuffer finden Sie unter
Alternative Logpuffer ansehen.
So führen Sie das Beispiel ohne die bedingten Logs wie
ALOGI_IFaus:logging_sdv_sampleSo führen Sie das Beispiel aus und geben die bedingten Logs wie
ALOGI_IFaus:LOGIF=1 logging_sdv_sample
Beispiel für strukturiertes Logging
Beispieldatei: structured_logging.cpp
So führen Sie das Beispiel aus, bei dem Logs in den Logpuffer
eventsgeschrieben werden:structured_logging_sdv_sample
Die Logpuffer event, security und stats enthalten strukturierte Daten anstelle von Freitext.
Strukturierte Daten werden mit der Event List API protokolliert. Diese wird immer mit der Priorität INFO und der numerischen Tag-ID protokolliert.
Eine .logtags Datei kann mit einem logtags Attribut in Android.bp.
definiert werden. Wenn sie angegeben ist, leitet logcat den Tag-Namen aus der numerischen Tag
ID ab. Der Tag-Name kann dann zum Filtern strukturierter Logs verwendet werden. Weitere Informationen und
eine Beschreibung des Dateiformats finden Sie im Kommentar in der
logcat event.logtags
Datei.
Während des Build-Prozesses werden alle logtags-Dateien zusammengeführt und in der Datei /system/etc/event-log-tags im Android-Systemimage platziert.
Beispiel für die Filterung von Kompilierungszeit-Logs kompilieren
Beispieldatei: compile_time_log_filtering.cpp
Dieses Beispiel enthält Makros, die Sie anpassen können, um einige Logs aus der ausführbaren Datei zu entfernen. Weitere Informationen finden Sie im Quellcode.
Beispiel für die Logfilterung: log_filtering.cpp
So führen Sie das Beispiel aus und legen die Mindestpriorität für Logs auf
WARNfest:LOGLEVEL=WARN log_filtering_sdv_sample
Die Logfilterung wird durch Systemeigenschaften beeinflusst. Für alle Logs mit
log.tag.<tag>persist.log.tag.<tag>
Für alle Logs im System:
log.tagpersist.log.tag
Um die ausgewählte Logebene auszuwählen, die in der Reihenfolge geprüft wird, kann jeder Wert auf V, D, I, W oder E festgelegt werden.
Die effektive Logebene ist die Ebene, die für die erste Systemeigenschaft mit einem Wert festgelegt wurde. Sie kann niedriger oder höher sein als die Logebene, die von der App mit einem __android_log_set_minimum_priority-Aufruf festgelegt wurde. Wenn keine der Eigenschaften festgelegt ist, gilt die mit __android_log_set_minimum_priority konfigurierte Ebene.
Weitere Informationen finden Sie unter dem Logging-System-Überblick.
So führen Sie das Beispiel aus und legen das Standard-Log-Tag auf
example_tagfest:LOGTAG=example_tag log_filtering_sdv_sample
Das Beispiel enthält auch eine auskommentierte LOG_TAG-Makrodefinition, mit der Sie das Log-Tag für alle Logmeldungen festlegen können. Das auf diese Weise festgelegte Tag überschreibt das Tag, das zur Laufzeit mit __android_log_set_default_tag festgelegt wurde.
Wenn das LOG_TAG-Makro nicht definiert ist und die App __android_log_set_default_tag nicht aufruft, ist das Standard-Tag das Ergebnis von getprogname(). Beispielsweise der Name der ausführbaren Datei.