spdlog

규규·2024년 2월 19일
0

C++

목록 보기
7/21
  • spdlog 장점
    • 쉽게 적용 가능 할 것
    • 다른 의존성이 없어야 함
    • 헤더만으로 사용 가능해야 함 (header only library)
    • 포맷 지정 가능
    • 특정 크기 까지만 사용 가능
    • 비동기 및 멀티 스레드에 대한 고려가 되어 있음
  • 예시
// Source code
#include "spdlog/spdlog.h"
 
#pragma comment(lib, "libspdlog_MD_2019_x86D_v1.10.0.lib")
 
int main()
{
    spdlog::info("Hello World!");
    spdlog::info("Age : {}", 42);
    spdlog::info("Between {1} and {0}", "Z", 0);
 
    spdlog::info("Notation Formatting int: {0:d}, hex: {0:x}, oct: {0:o}, bin: {0:b}", 42);
    spdlog::info("Padding 1 : {:8d}", 5);
    spdlog::info("Padding 2 : {:08x}", 5);
    spdlog::info("Floating 1 : {:08.1f}", 1.23456);
    spdlog::info("Floating 2 : {:08.2f}", 1.23456);
    spdlog::info("Floating 3 : {:8.1f}", 1.23456);
    spdlog::info("Floating 4 : {:8.2f}", 1.23456);
 
    return 0;
}
[2022-07-16 17:21:13.351] [info] Hello World!
[2022-07-16 17:21:13.355] [info] Age : 42
[2022-07-16 17:21:13.355] [info] Between 0 and Z
[2022-07-16 17:21:13.356] [info] Notation Formatting int: 42, hex: 2a, oct: 52, bin: 101010
[2022-07-16 17:21:13.356] [info] Padding 1 :        5
[2022-07-16 17:21:13.356] [info] Padding 2 : 00000005
[2022-07-16 17:21:13.357] [info] Floating 1 : 000001.2
[2022-07-16 17:21:13.357] [info] Floating 2 : 00001.23
[2022-07-16 17:21:13.357] [info] Floating 3 :      1.2
[2022-07-16 17:21:13.357] [info] Floating 4 :     1.23

spdlog는 open source formatting library인 fmt를 사용하고 있습니다.
formating 관련한 자세한 부분은 fmt 라이브러리를 참고하시면 됩니다.

  • 로그 레벨
    spdlog는 다음과 같이 로그 레벨을 지원하며, 오른쪽으로 갈 수록 순위가 높습니다.
    Trace – Debug – Info – Warning – Error – Critical

spdlog::set_level 함수를 통해서 로그 레벨을 설정할 수 있으며, 설정한 로그 레벨을 포함하여 순위가 높은 로그 레벨만 출력합니다.
spdlog::set_level(spdlog::level::err);

#include "spdlog/spdlog.h"
 
#pragma comment(lib, "libspdlog_MD_2019_x86D_v1.10.0.lib")
 
int main()
{
    spdlog::trace("Trace Level");
    spdlog::debug("Debug Level");
    spdlog::info("Info Level");
    spdlog::warn("Warn Level");
    spdlog::error("Error Level");
    spdlog::critical("Critical Level");
 
    return 0;
}
  • 파일 로그 남기기
    파일 로그도 아주 간단합니다. 헤더 파일을 추가하고, 파일 로거를 생성하고 기본 로거를 파일 로거로 지정하면 됩니다.
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
 
#pragma comment(lib, "libspdlog_MD_2019_x86D_v1.10.0.lib")
 
int main()
{
    auto logger = spdlog::basic_logger_mt("basic_logger", "logs/basic.txt");
    spdlog::set_default_logger(logger);
 
    spdlog::trace("Trace Level");
    spdlog::debug("Debug Level");
    spdlog::info("Info Level");
    spdlog::warn("Warn Level");
    spdlog::error("Error Level");
    spdlog::critical("Critical Level");
 
    return 0;
}

출처 :

profile
복습용 저장소

0개의 댓글