taltalpのアイコン画像
taltalp 2020年08月18日作成
セットアップや使用方法 セットアップや使用方法 閲覧数 3662
taltalp 2020年08月18日作成 セットアップや使用方法 セットアップや使用方法 閲覧数 3662

ESP Logging Library

ArduinoでESPを開発するときに、デバッグログのレベル付けと、レベルに応じて表示/非表示を切り替える方法についてのメモです。

使用するライブラリ

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/log.html

サンプルコード

#include "esp_log.h"
static const char *TAG = "main";

void setup() {
  Serial.begin(115200);

  /* // ESP-IDFでEnable log set levelを有効にすると使える
  esp_log_level_set("*", ESP_LOG_ERROR);
  esp_log_level_set("BLE", ESP_LOG_INFO);  // 特定のタグのものだけINFOにする
  */

  // ログのレベル付けができる & タグ付けができる
  ESP_LOGE(TAG, "Logging Level Error");
  ESP_LOGW(TAG, "Logging Level Warn");
  ESP_LOGI(TAG, "Logging Level Info");
  ESP_LOGD(TAG, "Logging Level Debug");
  ESP_LOGV(TAG, "Logging Level Verbose");

  // 書式指定もできる
  String str = "Hello";
  int i = 123;
  float f = 456.789;
  ESP_LOGV(TAG, "%s, %d, %3.2f", str, i, f);

  // std::stringの場合
  std::string std_str = "Hello std";
  ESP_LOGV(TAG, "%s", std_str.c_str());
}

void loop() {
}

Arduino IDEの設定

「ツール→Core Debug Level」を任意のレベルに設定する

キャプションを入力できます

実行結果

[E][sketch_aug18a.ino:9] setup(): Logging Level Error
[W][sketch_aug18a.ino:10] setup(): Logging Level Warn
[I][sketch_aug18a.ino:11] setup(): Logging Level Info
[D][sketch_aug18a.ino:12] setup(): Logging Level Debug
[V][sketch_aug18a.ino:13] setup(): Logging Level Verbose
[V][sketch_aug18a.ino:18] setup(): Hello, 123, 456.79
[V][sketch_aug18a.ino:21] setup(): Hello std

Platform IOの場合

platform.inibuild_flags = -DCORE_DEBUG_LEVEL=Xを追記する。レベルは下記の通り。

; Error
build_flags = -DCORE_DEBUG_LEVEL=1
; Warn
build_flags = -DCORE_DEBUG_LEVEL=2
; Info
build_flags = -DCORE_DEBUG_LEVEL=3
; Debug
build_flags = -DCORE_DEBUG_LEVEL=4
; Verbose
build_flags = -DCORE_DEBUG_LEVEL=5

その他

ESPで使われるライブラリのソースコードをみてみると、ESP_LOGX()は頻繁に使われているようです。
esp_log_level_set("TAG_NAME", ESP_LOG_ERROR);のようにTAGの名前を指定することで、特定のログのみを抽出することが可能なようです。
しかし、esp_log_level_setを実行するためにはESP_IDFでEnable log set levelを有効にしなければいけないようです。(未確認)
これについては今後試すことがあれば追記したいと思います。

2
4
taltalpのアイコン画像
アナログ回路分野を学んでいる博士課程の学生です。ADCの研究をしています。 twitter: @taltalpp
  • taltalp さんが 2020/08/18 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する