프로젝트 소개

spdlog는 속도, 유연성, 사용 편의성을 위해 설계된 고성능 C++ 로깅 라이브러리입니다. 헤더 전용 라이브러리로 사용하거나 컴파일하여 빌드 시간을 단축할 수 있으며, C++11 컴파일러만 있으면 됩니다. 이 라이브러리는 fmt 포맷팅 라이브러리 기반으로 구축되어 위치 인자, 패딩, 정렬, 사용자 정의 타입 포맷터를 지원하는 풍부한 출력 포맷팅을 제공합니다. 주요 기능으로는 동기 및 비동기 로깅 모드, 다중 스레드 및 단일 스레드 로거, 회전 로그 파일, 일별 로그 파일, 색상 지원 콘솔 출력, syslog, Windows 이벤트 로그, Windows 디버거 출력, Qt 위젯 등 다양한 로그 대상을 지원합니다. 사용자 정의 싱크를 구현하여 추가 대상을 지원하도록 확장할 수 있습니다. 로그 레벨은 런타임 또는 컴파일 타임에 필터링할 수 있으며, 환경 변수나 명령줄 인수에서 레벨을 로드할 수 있습니다. 라이브러리는 백트레이스 기능을 지원하여 디버그 메시지를 링 버퍼에 저장하고 필요 시 덤프할 수 있습니다. 오류 발생 시 최근 디버그 출력을 표시하는 데 유용합니다. 추가 유틸리티로는 등록된 로거의 주기적 플러시, 타이밍 측정을 위한 스톱워치 지원, 16진수 형식의 바이너리 데이터 로깅, 스레드 로컬 키-값 쌍을 위한 MDC(매핑된 진단 컨텍스트), 로그 이벤트에 대한 사용자 정의 콜백이 있습니다. 사용자 정의 오류 처리기와 파일 열기/닫기 이벤트 처리기를 통해 로깅 동작을 더욱 세밀하게 제어할 수 있습니다. spdlog는 크로스 플랫폼으로 Linux, FreeBSD, OpenBSD, Solaris, AIX, Windows(MSVC 2013+, Cygwin), macOS(Clang 3.5+), Android를 지원합니다. apt, Homebrew, MacPorts, FreeBSD pkg, dnf, emerge, pacman, zypper, vcpkg, conan, conda, build2 등 다양한 패키지 관리자를 통해 사용할 수 있습니다. Intel i7-4770 CPU를 사용하는 Ubuntu 64비트에서의 벤치마크에 따르면 기본 로깅의 동기 단일 스레드 처리량은 초당 약 570만 메시지이며, 비동기 모드는 오버런 정책 하에서 10개 스레드 경합 시 초당 최대 260만 메시지를 달성합니다. 문서는 프로젝트 위키에서 확인할 수 있습니다.