본문으로 건너뛰기
개발 생산성 도구 기초집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강. 로그 설계: 출력해야 할 정보와 남기면 안 되는 정보 미완료 상태