Spdlog(c++ログツール)

Ctelloでspdlogが必須だったので、触ってみました。

spdlogはc++用のログツール、c++に標準で存在しないのは不思議な気もしますが。

本家

https://github.com/gabime/spdlog

使用例も豊富です。

 

<インストール>

① 以下のヘッダーファイルをコピー

https://github.com/gabime/spdlog/tree/v1.x/include/spdlog

② おすすめは、

“Compiled version (recommended – much faster compile times)”

と言ってますが、macだとbrewが一番簡単でしょう。

% brew install spdlog

% brew list --version|grep spdlog

spdlog 1.10.0_1

 

<サンプルコード>

#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"

int main()
{
    spdlog::info("infromaion!");
    spdlog::warn("warning!");
    spdlog::error("error!");

    std::string test_message = "OK";
    spdlog::info("Test result is {}", test_message);

    int number_int = 10;
    float number_float = 12.345;
    spdlog::info("number_int is {:03d}", number_int);

    // set log level which also affects to the file log
    spdlog::set_level(spdlog::level::warn);
    spdlog::info("number_float is {:03.2f}", number_float);

    // logging to the log file
    auto log_file = spdlog::basic_logger_mt("logger", "log/basic.txt");
    log_file -> info("hello!");
    spdlog::set_default_logger(log_file);
    spdlog::warn("warning! write to the log file");
}

 

<使い方(cmakeファイル)>

https://github.com/gabime/spdlog/blob/v1.x/example/CMakeLists.txt

から以下のmakefileで、

cmake_minimum_required(VERSION 3.14)
project(SpdProject)

set(CMAKE_CXX_STANDARD 14)

if(NOT TARGET spdlog)
    # Stand-alone build
    find_package(spdlog REQUIRED)
endif()

# ---------------------------------------------------------------------------------------
# Example of using pre-compiled library
# ---------------------------------------------------------------------------------------

add_executable(spdlogTest src/spdlog_t.cpp)
target_link_libraries(spdlogTest PRIVATE spdlog::spdlog)

 

<実行結果>

・コンソール

% ./build/spdlogTest 
[2022-11-06 18:49:01.191] [info] infromaion!
[2022-11-06 18:49:01.192] [warning] warning!
[2022-11-06 18:49:01.192] [error] error!
[2022-11-06 18:49:01.192] [info] Test result is OK
[2022-11-06 18:49:01.192] [info] number_int is 010

・ログファイル(basic.txt)

実行の都度追記されます。

[2022-11-06 18:34:16.437] [logger] [warning] warning! write to the log file
[2022-11-06 18:49:01.192] [logger] [warning] warning! write to the log file

 

<ソース他>

ソースコード他は、以下に置いてあります。

https://github.com/chateight/spdlog_ex

 

admin