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