logger ์˜ต์…˜์€ ์ปดํŒŒ์ผ ์ค‘ React ์ปดํŒŒ์ผ๋Ÿฌ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ปค์Šคํ…€ ๋กœ๊น…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

{
logger: {
logEvent(filename, event) {
console.log(`[Compiler] ${event.kind}: ${filename}`);
}
}
}

๋ ˆํผ๋Ÿฐ์Šค

logger

์ปดํŒŒ์ผ๋Ÿฌ ๋™์ž‘์„ ์ถ”์ ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•œ ์ปค์Šคํ…€ ๋กœ๊น…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž…

{
logEvent: (filename: string | null, event: LoggerEvent) => void;
} | null

๊ธฐ๋ณธ๊ฐ’

null

๋ฉ”์„œ๋“œ

  • logEvent: ๊ฐ ์ปดํŒŒ์ผ๋Ÿฌ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ํŒŒ์ผ๋ช…, ์ด๋ฒคํŠธ ์„ธ๋ถ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ํƒ€์ž…

  • CompileSuccess: ํ•จ์ˆ˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋จ.
  • CompileError: ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํ•จ์ˆ˜๊ฐ€ ๊ฑด๋„ˆ๋›ฐ์–ด์ง.
  • CompileDiagnostic: ์น˜๋ช…์ ์ด์ง€ ์•Š์€ ์ง„๋‹จ ์ •๋ณด.
  • CompileSkip: ๋‹ค๋ฅธ ์ด์œ ๋กœ ํ•จ์ˆ˜๊ฐ€ ๊ฑด๋„ˆ๋›ฐ์–ด์ง.
  • PipelineError: ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜.
  • Timing: ์„ฑ๋Šฅ ํƒ€์ด๋ฐ ์ •๋ณด.

์ฃผ์˜ ์‚ฌํ•ญ

  • ์ด๋ฒคํŠธ ๊ตฌ์กฐ๋Š” ๋ฒ„์ „ ๊ฐ„์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๋งŽ์€ ๋กœ๊ทธ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

๊ธฐ๋ณธ ๋กœ๊น…

์ปดํŒŒ์ผ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

{
logger: {
logEvent(filename, event) {
switch (event.kind) {
case 'CompileSuccess': {
console.log(`โœ… Compiled: ${filename}`);
break;
}
case 'CompileError': {
console.log(`โŒ Skipped: ${filename}`);
break;
}
default: {}
}
}
}
}

์ƒ์„ธ ์˜ค๋ฅ˜ ๋กœ๊น…

์ปดํŒŒ์ผ ์‹คํŒจ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

{
logger: {
logEvent(filename, event) {
if (event.kind === 'CompileError') {
console.error(`\nCompilation failed: ${filename}`);
console.error(`Reason: ${event.detail.reason}`);

if (event.detail.description) {
console.error(`Details: ${event.detail.description}`);
}

if (event.detail.loc) {
const { line, column } = event.detail.loc.start;
console.error(`Location: Line ${line}, Column ${column}`);
}

if (event.detail.suggestions) {
console.error('Suggestions:', event.detail.suggestions);
}
}
}
}
}