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