소개
LogLab(로그랩) 은 로그를 효율적으로 설계하고 활용하기 위한 툴이다.
기능
로그랩은 다음과 같은 기능을 가지고 있다.
로그를 객체지향적이며 재활용 가능한 형태로 설계
설계된 로그에 관한 문서 자동 생성
실제 출력된 로그가 설계에 맞게 작성되었는지 검증
로그의 형식
로그랩은 JSON Lines 형식으로 파일에 남기는 로그를 대상으로 한다. JSON Lines 는 아래 예처럼 한 라인 한 라인이 유효한 JSON 객체가 되어야 한다.
{"DateTime": "2021-08-13T20:20:39+09:00", "Event": "Login", "ServerNo": 1, "AcntId": 1000}
{"DateTime": "2021-08-13T20:21:01+09:00", "Event": "Logout", "ServerNo": 1, "AcntId": 1000}
가능한 질문
다음과 같은 몇 가지 의문을 제기할 수 있겠다.
왜 자유로운 형식의 텍스트 로그가 아닌가?
완전 비정형 텍스트 로그는 작성하는 측에서는 편하지만, 파싱 및 관리가 힘들기에 원하는 정보를 추출하는데 한계가 있다.
왜 CSV 가 아닌가?
CSV 는 서비스 중 필드의 수나 위치가 변할 때 대응하기 까다로우며, 필드 값에 개행 문자나 구분자가 포함되면 파싱에 상당한 어려움을 겪게 된다. JSON 은 키:값 의 형식으로 언뜻 장황 (Verbose) 해 보이지만, 알아보기 쉽고 로그 구조 변경이 용이한 장점이 있다. 또한, 키는 반복적으로 나타나기에 압축하면 상당히 용량이 줄어든다.
왜 DB에 남기지 않는가?
DB에 남기는 로그는 잘 구조화되어 정보 활용 측면에서 뛰어나지만 다음과 같은 문제점이 있다.
로그 구조의 변경이 까다롭다.
시스템이 불안정할 때는 파일 로그보다 안정성이 떨어진다.
파일 로그는 별도의 장비없이 손쉽게 남길 수 있고, 관리 부담이 적다.
왜 로그를 설계해야 하는가?
DB 와 달리 로그는 설계없이 그때그때 자유롭게 남기는 것이 미덕일 수 있겠으나, 로그 종류가 늘어나고 로그에 담긴 정보가 분석의 대상이 되는 시점부터 체계화된 로그가 필요하게 된다.
대상 사용자
로그랩은 다음과 같은 입장의 사용자에게 도움이 될 수 있다.
서비스를 위한 로그 설계가 필요한 개발자
로그를 처리하고 분석하는 데이터 엔지니어/분석가
조직에서 생성되는 로그의 형식을 일관되게 유지/공유 하고 싶은 관리자
참고
로그랩은 윈도우, Linux, MacOS 에서 사용할 수 있다. 이후 설명은 Linux 를 중심으로 하겠으나, 다른 OS 에서도 큰 차이없이 동작할 것이다.