개요
로그 원칙은 애플리케이션이 로그를 이벤트 스트림으로 다루고, 운영 환경에서 수집과 분석이 가능하게 하라는 뜻입니다. 로그는 장애가 난 뒤 보는 파일이 아니라, 시스템이 지금 무엇을 하고 있는지 알려주는 운영 데이터입니다.
HandStack은 호스트 로그, 모듈 로그, 거래 로그, 빌드 로그, 관리작업 로그를 함께 봐야 합니다. 하나의 화면 오류도 wwwroot, transact, dbclient, graphclient, function, command, prompter, forwarder, 외부 서비스 로그를 따라가야 원인을 찾을 수 있습니다.
HandStack 로그의 종류
HandStack에서 자주 확인하는 로그는 다음과 같습니다.
ack시작 로그와 런타임 로그- 모듈별 로그 파일
- 거래 요청/응답 로그
- DB 질의 실행 오류
- 그래프 쿼리 실행 오류
- 서버 함수 실행 오류
- CLI/Web 명령 실행 오류
- LLM 프롬프트 실행 오류
- 프록시 세션과 외부 사이트 응답 오류
- 파일 업로드/다운로드 로그
- Jenkins 또는 배포 자동화 콘솔 로그
task스크립트 실행 로그
로그는 기능 코드와 운영 자동화 모두에서 같은 기준으로 남겨야 합니다.
민감정보 보호
로그에는 장애 분석에 필요한 식별자를 남기되, 암호, 토큰, 주민번호, 카드번호, 실제 API 키 같은 민감정보는 남기지 않습니다.
권장하는 로그 식별자는 다음과 같습니다.
- 요청 ID
- 거래 ID
- 모듈 ID
- 사용자 또는 작업자 식별자
- 실행 환경
- 오류 코드와 예외 메시지
마치며
신규 개발자는 오류를 숨기지 말고 추적 가능하게 남겨야 합니다. 다만 로그가 곧 보안 위험이 될 수 있다는 점도 함께 고려해야 합니다.