로그란? 서버와 홈페이지에서 발생한 일을 기록하는 방법 쉽게 이해하기
로그는 서버·프로그램이 남기는 시간순 기록입니다. Access·Error·로그 레벨·Request ID·로테이션·마스킹·모니터링과의 차이까지 초보 기준으로 정리합니다.
사용자는 500 화면만 볼 수 있지만, 원인을 알려면 서버 안에서 무슨 일이 있었는지 봐야 합니다. 로그(Log)는 서버·프로그램·DB 등이 실행되는 동안 일어난 일을 시간순으로 남기는 기록입니다.
쉽게 말하면 — 홈페이지와 서버가 쓰는 업무일지 · CCTV 기록입니다.
왜 필요할까 · 모니터링과의 차이
「어제 오후 2시에 주문 오류」처럼 과거 사건을 다시 따라가려면 로그가 필요합니다. 모니터링은 CPU·오류율처럼 「이상이 있다」를 숫자로 보여 주고, 로그는 「그때 Database timeout」처럼 사건을 자세히 보여 줍니다. 계기판 경고등(모니터링)과 정비소 진단 기록(로그)에 가깝습니다.
Access Log · Error Log · 앱 로그
Access Log는 누가 어떤 URL을 요청했고 어떤 상태 코드로 응답했는지(출입 대장)입니다. GET /old-page에 404가 반복되면 깨진 링크·리디렉션 필요를 의심합니다.
Error Log는 처리 중 무엇이 잘못됐는지, 애플리케이션 로그는 로그인·주문·결제 같은 프로그램 내부 사건을 남깁니다. 사용자는 500만 보고, 개발자는 로그로 「DB 연결 실패」를 찾을 수 있습니다.
로그 레벨 · Timestamp
- DEBUG — 개발용 상세(운영에서 과다 기록 주의)
- INFO — 정상 주요 사건(서버 시작·주문 완료)
- WARN — 당장 중단은 아니나 주의(디스크 85%·지연)
- ERROR — 요청·기능 실패
- FATAL / CRITICAL — 서비스 전체에 큰 영향
시간(Timestamp)이 있어야 배포·오류 순서를 맞출 수 있습니다. 서버마다 시계가 어긋나면 사건 순서를 잘못 읽을 수 있어 시간 동기화가 중요합니다.
IP · User-Agent · Request ID
접근 로그에는 IP가 자주 남습니다(장애·보안 분석에 유용, 개인정보 정책에 맞게 관리). CDN·리버스 프록시 뒤에서는 설정이 없으면 모든 IP가 프록시로만 찍힐 수 있습니다. User-Agent로 브라우저·크롤러를 참고할 수 있으나 위조될 수 있습니다.
요청이 여러 서비스를 거치면 Request ID를 공유해 한 요청의 로그를 묶습니다. 서비스가 커지면 중앙 로그 시스템에서 검색하는 것이 현실 파일 확인보다 효율적입니다.
보관 · 로테이션 · 보안
영원히 쌓아 두지 말고 기간(7일·30일 등)을 정합니다. 로그 로테이션으로 파일을 날짜·크기 단위로 나누고 오래된 것은 압축·삭제합니다. ERROR가 폭주하면 디스크가 100%가 될 수 있어 로그 용량도 모니터링합니다.
비밀번호·카드·토큰·API 키는 로그에 넣지 않습니다. 필요하면 마스킹합니다. 사용자에게는 안전한 안내만 보이고, Stack Trace·내부 경로는 서버 로그에만 남깁니다.
보안 · SEO · 구조화 로그
짧은 시간에 POST /login 401이 수천 번이거나 /wp-login.php 404가 반복되면 스캔·공격을 의심할 수 있습니다. 로그 자체가 SEO를 올리지는 않지만, 크롤러가 중요 페이지에서 500을 받거나 옛 URL 404가 반복되는지는 확인할 수 있습니다.
구조화 로그는 JSON처럼 필드로 남겨 order_id·event로 검색하기 쉽게 합니다. 작은 사이트는 Access·Error·앱 오류 로그만으로도 시작할 수 있습니다. 로그만으로 모든 원인을 알 수는 없고, 메트릭·배포 기록과 함께 봅니다.
자주 묻는 질문
로그란?
서버·프로그램이 실행 중 발생한 일을 시간순으로 남기는 기록입니다.
Access Log와 Error Log는?
Access는 요청·응답 기록, Error는 처리 중 오류 기록입니다.
비밀번호를 로그에 남겨도 되나?
안 됩니다. 민감 정보는 기록하지 않거나 마스킹합니다.
모니터링과 차이는?
모니터링은 상태 수치로 이상을 발견하고, 로그는 개별 사건을 조사합니다.
정리
모니터링 = 계기판 · 로그 = 업무일지
모니터링에서 「500이 급증했다」를 발견했다면 로그로 「DB 연결 실패」를 찾을 수 있습니다. 서버·서비스가 여러 개로 나뉘면 한 요청의 기록을 어떻게 연결할지 중요해집니다. 요청이 시스템을 지나간 경로를 따라가며 지연·실패 지점을 보는 기술이 분산 추적(Distributed Tracing)이고, 비슷한 오류를 자동으로 모아 관리하는 방식은 에러 트래킹(Error Tracking)입니다.