Los ejemplos de código de los servicios principales de SDV en /system/software_defined_vehicle/samples te permiten comenzar a compilar tus servicios. Cada muestra contiene un archivo README que describe el caso de uso.
Usa la API de Logging
Para obtener más información sobre las instrucciones proporcionadas, consulta lo siguiente:
Ejemplo de registro básico
logging.cpp presenta la escritura en los búferes main, system y radio.
Para leer una breve descripción de los búferes de registro disponibles, consulta
Cómo ver los búferes de registro alternativos.
Para ejecutar la muestra sin los registros condicionales, como
ALOGI_IF, haz lo siguiente:logging_sdv_samplePara ejecutar la muestra y mostrar los registros condicionales, como
ALOGI_IF, haz lo siguiente:LOGIF=1 logging_sdv_sample
Ejemplo de registro estructurado
Archivo de muestra: structured_logging.cpp
Para ejecutar la muestra, que escribe registros en el búfer de registro
events, haz lo siguiente:structured_logging_sdv_sample
Los búferes de registro event, security y stats contienen datos estructurados en lugar de texto libre.
Los datos estructurados se registran con la API de lista de eventos, que siempre se registra con prioridad INFO y el ID de etiqueta numérica.
Se puede definir un archivo .logtags con un atributo logtags en Android.bp.
Cuando se proporciona, logcat lo usa para derivar el nombre de la etiqueta del ID de etiqueta
numérica. Luego, el nombre de la etiqueta se puede usar para filtrar registros estructurados. Para obtener detalles y
una descripción del formato de archivo, consulta el comentario en el
logcat event.logtags
archivo.
Durante el proceso de compilación, todos los archivos logtags se combinan y se colocan en el archivo /system/etc/event-log-tags en la imagen del sistema Android.
Compila un ejemplo de filtrado de registros de tiempo
Archivo de muestra: compile_time_log_filtering.cpp
Esta muestra contiene macros que puedes ajustar para quitar algunos registros del ejecutable. Consulta el código fuente para obtener más detalles.
Ejemplo de filtrado de registros: log_filtering.cpp
Para ejecutar la muestra y establecer la prioridad de registro mínima en
WARN, haz lo siguiente:LOGLEVEL=WARN log_filtering_sdv_sample
El filtrado de registros se ve afectado por las propiedades del sistema. Para todos los registros con
log.tag.<tag>persist.log.tag.<tag>
Para todos los registros del sistema:
log.tagpersist.log.tag
Para seleccionar el nivel de registro elegido, que se verifica en orden, cada valor se puede establecer en V, D, I, W o E.
El nivel de registro efectivo es el nivel establecido en la primera propiedad del sistema que tiene un valor, que puede ser inferior o superior al nivel de registro establecido por la app con una llamada __android_log_set_minimum_priority. Cuando no se establece ninguna de las propiedades, se aplica el nivel configurado con __android_log_set_minimum_priority.
Para obtener más información, consulta la Descripción general del sistema de Logging.
Ejecuta la muestra y establece la etiqueta de registro predeterminada en
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
La muestra también contiene una definición de macro LOG_TAG comentada que puedes usar para establecer la etiqueta de registro para todos los mensajes de registro. La etiqueta establecida de esta manera anula la etiqueta establecida en el tiempo de ejecución con __android_log_set_default_tag.
Si no se define la macro LOG_TAG y la app no llama a __android_log_set_default_tag, la etiqueta predeterminada es el resultado de getprogname(). Por ejemplo, el nombre ejecutable.