소개 ==== LogLab(로그랩) 은 로그를 효율적으로 설계하고 활용하기 위한 툴이다. 기능 ---- 로그랩은 다음과 같은 기능을 가지고 있다. - 로그를 객체지향적이며 재활용 가능한 형태로 설계 - 설계된 로그에 관한 문서 자동 생성 - 실제 출력된 로그가 설계에 맞게 작성되었는지 검증 로그의 형식 ---------- 로그랩은 `JSON Lines `_ 형식으로 파일에 남기는 로그를 대상으로 한다. JSON Lines 는 아래 예처럼 한 라인 한 라인이 유효한 JSON 객체가 되어야 한다. .. code-block:: {"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 와 달리 로그는 설계없이 그때그때 자유롭게 남기는 것이 미덕일 수 있겠으나, 로그 종류가 늘어나고 로그에 담긴 정보가 분석의 대상이 되는 시점부터 체계화된 로그가 필요하게 된다. 대상 사용자 ---------- 로그랩은 다음과 같은 입장의 사용자에게 도움이 될 수 있다. - 서비스를 위한 로그 설계가 필요한 개발자 - 로그를 처리하고 분석하는 데이터 엔지니어/분석가 - 조직에서 생성되는 로그의 형식을 일관되게 유지/공유 하고 싶은 관리자 .. note:: 로그랩은 윈도우, Linux, MacOS 에서 사용할 수 있다. 이후 설명은 Linux 를 중심으로 하겠으나, 다른 OS 에서도 큰 차이없이 동작할 것이다.