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.ini
にbuild_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
さんが
2020/08/18
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する