コアコードサンプル

/system/software_defined_vehicle/samples の SDV Core サービス コードサンプルを使用すると、サービスの構築を開始できます。各サンプルには、ユースケースを説明する README ファイルが含まれています。

Logging API を使用する

提供された手順の詳細については、以下をご覧ください。

基本的なログのサンプル

logging.cpp は、mainsystemradio バッファへの書き込みを示します。使用可能なログバッファの簡単な説明については、代替ログバッファを表示するをご覧ください。

  • ALOGI_IF などの条件付きログなしでサンプルを実行するには:

    logging_sdv_sample
    
  • サンプルを実行して、ALOGI_IF などの条件付きログを出力するには:

    LOGIF=1 logging_sdv_sample
    

構造化ロギングのサンプル

サンプル ファイル: structured_logging.cpp

  • events ログバッファにログを書き込むサンプルを実行するには:

    structured_logging_sdv_sample
    

eventsecuritystats のログバッファには、自由形式のテキストではなく構造化データが保持されます。

構造化データはイベントリスト API を使用してロギングされます。このデータは常に INFO 優先度と数値タグ ID でロギングされます。

.logtags ファイルは、Android.bp.logtags 属性で定義できます。この属性が指定されている場合、logcat はこれを使用して数値タグ ID からタグ名を導出します。タグ名は、構造化ログのフィルタリングに使用できます。詳細とファイル形式の説明については、logcat event.logtags ファイルのコメントをご覧ください。

ビルドプロセス中に、すべての logtags ファイルがマージされ、Android システム イメージの /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

選択したログレベルを順番にチェックするには、各値を VDIWE に設定します。

有効なログレベルは、値を持つ最初のシステム プロパティに設定されたレベルです。これは、__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() の結果になります。たとえば、実行可能ファイル名などです。