어제 스터디에서는 로깅에 대한 이야기를 다루었습니다. 사실, 지난 스터디에서 로깅을 왜 쓰고 있으며 어떻게 다루고 있는지에 대해 간략히 얘기가 오갔죠. 시스템, 비즈니스에 따라 로깅에 대한 생각의 접근이 서로 다른 경우가 있었네요.
우선 제 의견을 먼저 말하자면, 전 서비스 운영측면에서 로깅은 필수라고 봅니다. 일반적으로 약정 코딩(?)이라 하여 저희는 input value 를 모두 의심하지 않고 코딩합니다. 예로, 숫자로 이루어진 문자열을 받아 int 로 변환해주기로 약속을 한 int parseInt(String strNum) 이라는 메소드가 있다고 가정합니다. 이 메소드의 구현부는 strNum 은 int로 변환시킬 수 있는 값이 들어오리라 가정합니다.
그런데, 과연 이 strNum 이 숫자로만 이루어진 문자열이란 보증은 누가 해주나요?
그렇다고 boundary case 에 대해 모든 처리를 해준다면 그 코드량은 감당할 수 있을까요?
사실 catalina 에서는 예외를 잡아서 로깅을 해주고 있긴 합니다만 어떤 값이 들어왔는지에 대해서는 알 방법이 없습니다. 또한 모든 was가 로깅을 제공해주는지도 .... (전 잘 모르겠어요 ㅎㅎ;;;)
이건 어쩌면 최소한의 안전장치일 수도 있습니다. 약정대로 코딩을 했으나 약정을 누가 어겼는가에 대해 문제가 발생하였을 때에, 이 로깅은 증거 문서가 되어버리는거죠. 다른 분들의 의견은 어떠신지 궁금하네요.
2개의 의견 from SLiPP
이기종 시스템간의 연동에는 로깅이 정말 유용하다고 봅니다. 말씀하시는 것 처럼 귀책사유를 알아내야하니까요.
다만 HTTP POST 메서드를 통으로 로깅할 것인가하는 문제가 대두되기 시작하면 좀 ... 적당한 수준에서 마무리해야겠죠.
@benghun 답변 감사합니다. 사실 이 문제도 답이 없는 것 같아요. 다만 말씀처럼 서로 다른 시스템간의 연동에 있어서는 무척 중요한 것 같아요. 전 한번 크게 디여보고 나니 외부 시스템과의 통신이 필요할 때엔 로깅에 무척 신경쓰게 되는 것 같네요. 무엇을 로깅할 것인가도... 내부 협의가 있어야겠네요 ㅎㅎ;
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.