C++ 프로그램의 로그 기록을 빠르고 유연하게 관리하는 방법
프로그램 실행 중 발생한 사건을 빠르고 정확하게 기록해야 할 때, 이 라이브러리가 그 역할을 맡습니다. C++11 표준을 기반으로 동작하며, 헤더 파일만 복사해서 쓰거나 컴파일된 형태로 사용할 수 있는 두 가지 방식을 지원합니다. 로그를 어디에, 어떤 형식으로 남길지 상황에 맞게 조절할 수 있어 복잡한 시스템에서도 관리가 쉽습니다.
다양한 출력 대상과 세밀한 제어
로그를 단순히 콘솔에 출력하는 것을 넘어, 파일 크기나 날짜를 기준으로 파일을 자동으로 나누는 로테이션 기능을 제공합니다. Windows 이벤트 로그, syslog, Android 로그, Qt 위젯 등 다양한 플랫폼과 도구로 기록을 보낼 수 있습니다. 각 출력 대상별로 로그 레벨과 형식을 독립적으로 설정할 수 있어, 콘솔에는 경고만 표시하고 파일에는 상세 정보를 모두 남기는 식의 세밀한 제어가 가능합니다. 또한 사용자 정의 콜백을 통해 로그가 기록될 때마다 이메일 알림을 보내거나 다른 작업을 실행하는 것도 가능합니다.
성능과 디버깅을 위한 특수 기능
동기 모드와 비동기 모드를 지원하여, 기록 작업이 메인 프로세스의 속도를 늦추지 않도록 합니다. 비동기 모드에서는 메시지 큐의 크기와 오버플로우 정책을 설정할 수 있습니다. 디버깅을 위해 백트레이스 기능을 제공하여, 최근의 디버그 메시지를 링 버퍼에 저장해 두었다가 오류 발생 시점에 한꺼번에 출력할 수 있습니다. 이는 평소에는 디버그 로그를 남기지 않고, 문제가 생겼을 때만 필요한 정보를 확인하고 싶을 때 유용합니다.
설치와 플랫폼 지원 범위
Linux, FreeBSD, OpenBSD, Solaris, AIX, Windows, macOS, Android 등 주요 플랫폼을 지원합니다. 헤더 전용 버전은 include 폴더를 빌드 트리에 복사하고 C++11 컴파일러만 있으면 바로 사용할 수 있습니다. 컴파일 버전은 CMake를 통해 빌드하며, 컴파일 시간을 단축하는 것이 장점입니다. Debian, Homebrew, MacPorts, FreeBSD, Fedora, Gentoo, Arch Linux, openSUSE, ALT Linux, vcpkg, conan, conda, build2 등 다양한 패키지 매니저를 통해 설치할 수 있습니다. Windows는 msvc 2013 이상, macOS는 clang 3.5 이상을 요구합니다.
성능 수치와 사용 전 확인 사항
비동기 모드와 MDC(매핑 진단 컨텍스트) 기능은 스레드 로컬 스토리지에 의존하므로, 비동기 모드에서는 MDC를 사용할 수 없다는 점을 유의해야 합니다. 또한 로그 레벨은 런타임에 변경할 수 있지만, 컴파일 타임 레벨은 릴리스 코드에서 해당 호출을 제거하는 방식이므로 이 차이를 이해하고 설정해야 합니다.