ESP-IDFを使ってみる

Logging機能


ESP-IDFには強力なLogging機能が有ります。
プロジェクトをデバッグするときにはこの機能を多用します。
#include <stdio.h>
#include <inttypes.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"

#define TAG "MAIN"

void app_main()
{
    ESP_LOGI(TAG, "This is info level");
    ESP_LOGW(TAG, "This is warning level");
    ESP_LOGE(TAG, "This is error level");
}

標準では以下の様に起動時からのタイムスタンプを通算TICK数の形式で表示します。
通算TICK数なので最小単位は10ミリ秒となります。
10ミリ秒以内に複数のロギングを行った場合、通算TICK数は同じ値となります。
以下では332TICKのタイミングで複数のロギングが行われていることが分かります。


configを変えることで、表示フォーマットを時分秒ミリ秒形式に変えることができます。


1ミリ秒以内に複数のロギングを行った場合、通算時刻は同じ値となります。
以下では134ミリ秒のタイミングで複数のロギングが行われていることが分かります。




esp-idfのLoggingライブラリには、「esp_log_set_vprintf」関数が含まれています。
この関数を使用すると、以下の様にロギングの表示フォーマットをカスタマイズすることができます。
NTPで現在時刻を取り出して、現在日時を表示しています。
長時間連続稼働するプロジェクトでは、起動からの通算TICK数や通算時刻表示よりも、実時間表示の方が便利な場合が有ります。
また、タイムスタンプの表示を無くすこともできます。
ソースはこちらで 公開しています。


続く....