ESP8266_RTOS_SDK V3を使ってみる

Logging library


examplesの下にあるサンプルコードを見ていると、ESP_LOGIのマクロが多用されています。
ESP8266_RTOS_SDKではLogging libraryの機能で、ログ出力レベルを変更することができます。
Logging libraryについてはこ ちらに説明が有ります。
以下のコードで機能を確認してみました。
/* The example of ESP8266_RTOS_SDK
 *
 * This sample code is in the public domain.
 */
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "esp_log.h"

static const char *TAG = "LogTest";

void app_main(void)
{
    ESP_LOGE(TAG,"This is LOGE");
    ESP_LOGW(TAG,"This is LOGW");
    ESP_LOGI(TAG,"This is LOGI");
    ESP_LOGD(TAG,"This is LOGD");
    ESP_LOGV(TAG,"This is LOGV");
}



このコードを実行すると以下の様に表示されます。


menuconfigでログレベルを変えてみます。


現在のログレベルはInfoになっています。


一番高いレベルのVerboseに変更します。


ビルドして実行すると、全てのレベルのログが表示されます。




ログレベルをErrorに下げてみます。


ビルドして実行するとErrorレベルのログだけが表示されます。




Bootloaderのログレベルも変えてみます。


Bootloaderのログは無しにしてみました。


bootloaderのログは出なくなります。




プログラム内でログレベルを変えることができます。
/* The example of ESP8266_RTOS_SDK
 *
 * This sample code is in the public domain.
 */
#include <stdio.h>
#include "freertos/FreeRTOS.h"

#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
#include "esp_log.h"

static const char *TAG = "Test";

void app_main(void)
{
    ESP_LOGE(TAG,"This is LOGE");
    ESP_LOGW(TAG,"This is LOGW");
    ESP_LOGI(TAG,"This is LOGI");
    ESP_LOGD(TAG,"This is LOGD");
    ESP_LOGV(TAG,"This is LOGV");
}

ビルドして実行すると全てのレベルのログが表示されます。




esp_log_level_set()を使うとTAG毎にログレベルを変えることができます。
但し、esp_log_level_set()ではログレベルを下げることしかできません。
/* The example of ESP8266_RTOS_SDK
 *
 * This sample code is in the public domain.
 */
#include <stdio.h>
#include "freertos/FreeRTOS.h"

#include "esp_log.h"

static const char *TAG1 = "TAG1";
static const char *TAG2 = "TAG2";

void app_main(void)
{
    ESP_LOGE(TAG1,"TAG1's LOGE");
    ESP_LOGW(TAG1,"TAG1's LOGW");
    ESP_LOGI(TAG1,"TAG1's LOGI");
    ESP_LOGD(TAG1,"TAG1's LOGD");
    ESP_LOGV(TAG1,"TAG1's LOGV");

    esp_log_level_set(TAG2, ESP_LOG_ERROR);
    ESP_LOGE(TAG2,"TAG2's LOGE");
    ESP_LOGW(TAG2,"TAG2's LOGW");
    ESP_LOGI(TAG2,"TAG2's LOGI");
    ESP_LOGD(TAG2,"TAG2's LOGD");
    ESP_LOGV(TAG2,"TAG2's LOGV");
}

esp_log_level_set()を使うためにはmenuconfigで以下を有効にします。


ビルドして実行するとTAG2のログだけ、レベルが変わります。


続く....