본문으로 건너뛰기
개발 생산성 도구 기초집LESSON 10

로그 설계: 출력해야 할 정보와 남기면 안 되는 정보

난이도초급
예상 시간40분
선수지식9강 Debugger

10강. 로그 설계: 출력해야 할 정보와 남기면 안 되는 정보

1. 이번 강의에서 해결할 문제​

여기 실행됨 로그가 반복되어 어떤 입력과 상태에서 실패했는지 모르고, 요청 객체 전체를 출력해 비밀 정보가 남을 위험이 있습니다.

2. 학습 목표​

3. 핵심 개념​

좋은 로그는 나중에 질문할 수 있어야 합니다.

  • 무슨 사건이 발생했는가?
  • 성공·실패와 이유는 무엇인가?
  • 어느 기능·로컬 객체에서 발생했는가?
  • 재현에 필요한 입력 범위와 시간이 있는가?

실제 API Key, 인증 헤더, 비밀번호, 이메일과 사용자 입력 전체는 기록하지 않습니다. 민감 값은 ***로 바꾸는 것보다 처음부터 로그 객체에 넣지 않는 편이 안전합니다.

4. 단계별 실습​

JavaScript · 파일 경로: src/logging.js

src/logging.js
export function logSortResult({packageType, zoneType, correct, durationMs}) {
const entry = {
time: new Date().toISOString(),
event: 'sort_resolved',
packageType,
zoneType,
correct,
durationMs,
};

console.info(JSON.stringify(entry));
}

JavaScript · 파일 경로: src/app.js의 호출 예시

src/app.js
import {logSortResult} from './logging.js';

logSortResult({
packageType: 'blue',
zoneType: 'orange',
correct: false,
durationMs: 842,
});

PowerShell · 실행 위치: 프로젝트 루트

node .\src\app.js 2>&1 | Tee-Object -FilePath .\logs\latest.log
Get-Content .\logs\latest.log

예상 결과: 한 줄 JSON 로그가 화면과 파일에 남습니다. logs 폴더를 먼저 만들고 생성 로그는 Git 제외 여부를 확인합니다. 관리자 권한은 필요하지 않습니다.

5. 도구와 설정이 동작하는 이유​

고정된 event 이름과 필드는 텍스트 검색·필터가 가능하고 한 사건을 한 줄로 남겨 비교하기 쉽습니다. 호출자가 허용된 필드만 전달하므로 전체 사용자 객체가 실수로 출력되지 않습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

로그 설계: 출력해야 할 정보와 남기면 안 되는 정보 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“로그 설계: 출력해야 할 정보와 남기면 안 되는 정보” 실습을 안전하게 진행하기 위한 판단으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘로그만으로 모든 문제 해결’ 상태에 관한 “로그 설계: 출력해야 할 정보와 남기면 안 되는 정보” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

10강. 로그 설계: 출력해야 할 정보와 남기면 안 되는 정보 미완료 상태