2023๋…„ 12์›” 15์ผยท8๋ถ„ ์ฝ๊ธฐ

Zap Logger๋กœ Go ํ–ฅ์ƒ: ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ

์ด ์ดˆ๋ณด์ž ์นœํ™”์ ์ธ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด Zap Logger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์ฒด๊ณ„์ ์ด๊ณ  ๋น ๋ฅด๋ฉฐ ์ˆ˜์ค€ ๋†’์€ ๋กœ๊น…์— ๋Œ€ํ•œ ํŒ์„ ์‚ดํŽด๋ณด์„ธ์š”.

Zap Logger๋กœ Go ํ–ฅ์ƒ: ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ

๋กœ๊น…์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์— ํ•„์ˆ˜์ ์ธ ๋ฐฉ์‹์ด๋ฉฐ, ํŠนํžˆ ๋‹จ์ˆœ์„ฑ๊ณผ ํšจ์œจ์„ฑ์œผ๋กœ ์œ ๋ช…ํ•œ Go ์˜์—ญ์—์„œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๋กœ๊น… ๋ฐฉ๋ฒ•์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘๊ณผ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ™œ๋ฐœํ•œ Go ์ƒํƒœ๊ณ„์—์„œ ๋กœ๊น…์€ ์ด์™€ ๋™์ผํ•œ ์ฒ ํ•™์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ˆˆ์— ๋„์ง€ ์•Š๊ณ , ๊ฐ„๋‹จํ•˜๋ฉฐ, ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Go๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋กœ๊น…์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. Go์— ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ๋ช…๋ น๋ฌธ์„ ์ฝ˜์†”์— ์ธ์‡„ํ•˜๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ์ฒด๊ณ„์ ์ธ ๊ธฐ๋ก์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ก์€ ๋””๋ฒ„๊น…, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง, ์‹ฌ์ง€์–ด ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ์œ„ํ•œ ์ค‘์š”ํ•œ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Go๋Š” ํ„ฐ๋ฏธ๋„์ด๋‚˜ ์ง€์ •๋œ ํŒŒ์ผ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๋Œ€์ƒ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ ๊ธฐ๋ณธ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋ณธ ๋กœ๊น… ํŒจํ‚ค์ง€ log ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ํ˜„์‹ค์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ํ˜•์‹์„ ์ ์šฉํ•˜๊ณ , ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Go์˜ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€ ์ƒํƒœ๊ณ„์˜ ์žฅ์ ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์†์˜ ๊ตฌ์กฐ์ ์ด๋ฉฐ ์œ ์—ฐํ•œ ๋กœ๊น… ๊ธฐ๋Šฅ์œผ๋กœ ์ธ๊ธฐ๋ฅผ ์–ป์€ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ Zap ๋กœ๊ฑฐ์ž…๋‹ˆ๋‹ค. Zap์€ ์ฒ˜์Œ๋ถ€ํ„ฐ Go์˜ ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ˜„์‹ค์„ ์œ„ํ•œ "๊ฐ•๋ฐ•์ ์œผ๋กœ ๋น ๋ฅธ" ๋กœ๊ฑฐ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ๊ณผ ๊ฐœ๋ฐœ์ž์˜ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์— ์ค‘์ ์„ ๋‘์–ด ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Go ๋กœ๊ทธ์ธ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ํ†ตํ•ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋กœ๊น…์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ์‹œ ์‹œ์Šคํ…œ์˜ ์—ญ์‚ฌ์  ์„ฑ๊ณผ์™€ ๋‚ด๋ถ€ ์ž‘๋™์„ ํŽผ์น˜๋Š” ์กฐ์šฉํ•œ ๊ด€์ฐฐ์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํšจ๊ณผ์ ์ธ ๋กœ๊น…์„ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๋ฉด ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ๋”์šฑ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ๋ฅผ ์กฐ์‚ฌํ•  ๋•Œ ๋‹ค์–‘ํ•œ ๋ณด์ƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊น…์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น…์˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์˜์›…์ด์ง€๋งŒ, ์„œ๋‘˜๋Ÿฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ข…์ข… ๊ฐ„๊ณผ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— Zap Logger๋ฅผ ์„ ํƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋กœ๊น…์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์ฃผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ค‘์š”ํ•œ ์ธก๋ฉด์ž…๋‹ˆ๋‹ค. Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ธ๊ณ„์—๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ํŠน์„ฑ์„ ์ง€๋‹Œ ๋‹ค์–‘ํ•œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ์ค‘์—์„œ๋„ Zap Logger๋Š” ํ˜„๋Œ€์ ์ด๊ณ  ํšจ์œจ์ ์ด๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งž์ถฐ์ง„ ํ’ˆ์งˆ๋กœ ๋น›์„ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

Zap Logger๋Š” ์ผ๋ฐ˜์ ์ธ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ์—ผ๋‘์— ๋‘๊ณ  ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด Zap์˜ ์—„์ฒญ๋‚œ ์†๋„์™€ ๋ฏธ๋ฏธํ•œ CPU ์˜ค๋ฒ„ํ—ค๋“œ์— ๋Œ€ํ•ด ๋“ค์–ด๋ดค์ง€๋งŒ ์ด๋Š” Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Zap์ด ์„ ํ˜ธ๋˜๋Š” ์ด์œ ๋ฅผ ํ‘œ๋ฉด์ ์œผ๋กœ๋งŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

  • ํƒ์›”ํ•œ ์„ฑ๋Šฅ: Zap์€ ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‹๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์‚ฌ๋ ค ๊นŠ์€ ๊ตฌ์กฐํ™”๋ฅผ ํ†ตํ•ด GC(๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ) ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์—ฌ์ฃผ๋ฏ€๋กœ ์žฆ์€ GC ์ผ์‹œ ์ค‘์ง€๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ธ‰์ฆ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’์€ ์‹œ์Šคํ…œ์— ์ด์ƒ์ ์ธ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
  • ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…: ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ์กด ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ Zap ๋กœ๊ทธ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ JSON ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ตฌ์กฐํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋กœ๊ทธ๋ฅผ ๋”์šฑ ์ผ๊ด€๋˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠนํžˆ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ ์ฟผ๋ฆฌ, ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ๋ถ„์„์„ ์‰ฝ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • ์ˆ˜์ค€ ๋ฐ ์ƒ˜ํ”Œ๋ง: Zap์€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๋ฐ ์ƒ˜ํ”Œ๋ง ๊ธฐ๋Šฅ์˜ ๊ธด๊ธ‰์„ฑ๊ณผ ์ค‘์š”์„ฑ์„ ํฌ์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋กœ๊น… ์ˆ˜์ค€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋กœ๊ทธ ๋ฐ์ดํ„ฐ์—์„œ ์‹ ํ˜ธ ๋Œ€ ์žก์Œ ๋น„์œจ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋ฐ˜๋ณต ๋ฉ”์‹œ์ง€ ์ƒ˜ํ”Œ๋งŒ ๊ธฐ๋กํ•˜์—ฌ ์žก์Œ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜: Zap์„ ์ฐจ๋ณ„ํ™”ํ•˜๋Š” ๊ฒƒ์€ ์œ ์—ฐ์„ฑ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” Zap์˜ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”, ์ถœ๋ ฅ ์‹ฑํฌ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ณ  ์ž์ฒด ๋กœ๊น… ๊ตฌ์„ฑ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋งž๋Š” ๋กœ๊น… ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ ๋ฐ ์ƒ์‚ฐ ์ค€๋น„: Zap ์œ„์ ฏ์€ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ด๊ณ  ์ƒ์‚ฐ์„ ์œ„ํ•ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋กœ๊ฑฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์  ๋ ˆ๋ฒจ ์กฐ์ • ๋ฐ ๊ฐœ๋ฐœ ์นœํ™”์ ์ธ ์ฝ˜์†” ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋„๊ตฌ๋ฅผ ์ „ํ™˜ํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒํ™ฉ์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: ๋” ๋‚˜์€ ์Šคํƒ

Zap์„ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ†ตํ•ฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋กœ๊น… ํšจ์œจ์„ฑ๊ณผ ๊ฐœ๋ฐœ์ž ์ธ์ฒด๊ณตํ•™์  ์ธก๋ฉด์—์„œ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppMaster ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์€ ์šด์˜ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  Go ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ Zap Logger๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํšจ๊ณผ์ ์ด๋ฉด์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ๋œ ์›ํ™œํ•œ ๊ฒฝํ—˜์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ„๋‹จํ•œ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋“  ๋ณต์žกํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…ํ•˜๋“  Zap Logger์˜ ํŠน์„ฑ์€ ๋กœ๊ทธ๋ฅผ ๋” ๋˜‘๋˜‘ํ•˜๊ฒŒ, ๋” ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ ์„ ํƒ์ด ๋ฉ๋‹ˆ๋‹ค.

Go ํ”„๋กœ์ ํŠธ์—์„œ Zap Logger ์„ค์ •

๋กœ๊น…์€ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ, ํŠนํžˆ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Go๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ๋กœ๊น… ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Zap Logger๊ฐ€ ๋ฐ”๋กœ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Go ํ”„๋กœ์ ํŠธ์—์„œ Zap Logger๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

Zap Logger ์„ค์ •์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์ „์ œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  1. ์ž‘๋™ํ•˜๋Š” Go ํ™˜๊ฒฝ.
  2. Go ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ฐ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์‹.
  3. ๋กœ๊น…์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๊ธฐ์กด Go ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์˜๋„.

Zap ๋กœ๊ฑฐ ์„ค์น˜

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— Zap Logger๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 go get -u go.uber.org/zap

์ด ๋ช…๋ น์€ Zap Logger ํŒจํ‚ค์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•˜์—ฌ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ฑฐ ์ดˆ๊ธฐํ™”

Zap์ด ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€๋˜๋ฉด ๋กœ๊ฑฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 import ( "go.uber.org/zap")func main() { logger, err := zap.NewProduction() if err != nil { // Handle error } defer logger.Sync() // Flushes buffer, if any sugar := logger.Sugar() // Use the sugar logger for typical logging scenarios sugar.Infow("Zap Logger initialized successfully", // Structured context as key-value pairs "version", "v1.0.0", "mode", "production", )}

์ด ์ฝ”๋“œ ์กฐ๊ฐ์—์„œ๋Š” Zap ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์„ฑ๋Šฅ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์— ์ตœ์ ํ™”๋œ ํ”„๋กœ๋•์…˜ ์„ค์ •์œผ๋กœ ๋กœ๊ฑฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ๋ฒ„ํผ๋ง๋œ ๋กœ๊ทธ ํ•ญ๋ชฉ์ด ๋Œ€์ƒ์œผ๋กœ ํ”Œ๋Ÿฌ์‹œ๋˜๋„๋ก Sync ๋ฉ”์„œ๋“œ๊ฐ€ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

๋งž์ถค ๊ตฌ์„ฑ

Zap์€ ๋กœ๊น… ๊ตฌ์„ฑ์— ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 logger, err := zap.NewDevelopment()if err != nil { // Handle error}

์ธ์ฝ”๋”ฉ(JSON ๋˜๋Š” ์ฝ˜์†”), ์ถœ๋ ฅ ๋Œ€์ƒ ๋˜๋Š” ๋กœ๊ทธ ์ˆœํ™˜๊ณผ ๊ฐ™์€ ๋กœ๊น… ๋™์ž‘์„ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 cfg := zap.Config{ // Customize configuration here}logger, err := cfg.Build()if err != nil { // Handle error}

์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๋กœ๊ทธ์˜ ์ˆ˜์ค€๊ณผ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IDE์™€์˜ ํ†ตํ•ฉ

Zap Logger๋Š” ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ Visual Studio Code ๋˜๋Š” GoLand์™€ ๊ฐ™์€ IDE์™€ ํ†ตํ•ฉํ•˜๋ฉด ์ƒ์‚ฐ์„ฑ์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zap ๋กœ๊ฑฐ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ด์— ๋”ฐ๋ผ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ๋ฐ ์ฝ”๋“œ ์ œ์•ˆ์„ ์ œ๊ณตํ•˜๋„๋ก IDE๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„

Go ํ”„๋กœ์ ํŠธ์—์„œ Zap Logger๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋‚˜๋ฉด ๊ตฌ์กฐ์  ๋กœ๊น…, ์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น… ๋“ฑ์„ ํฌํ•จํ•œ ๊ณ ๊ธ‰ ๋กœ๊น… โ€‹โ€‹์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Zap์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์„ ์œ ์ง€ํ•˜์„ธ์š”.

๋˜ํ•œ AppMaster ์™€ ๊ฐ™์€ ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ Zap๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ง€์ • ๋กœ๊ฑฐ๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ๋‚ด์žฅ๋œ ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๊ฐ•ํ™”๋˜์–ด no-code ๋„๊ตฌ ์„ธํŠธ๋กœ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋ฒ„ ์ธก ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zap์„ ์‚ฌ์šฉํ•œ ๊ธฐ๋ณธ ๋กœ๊น…: ํ•ต์‹ฌ ๊ฐœ๋…

Go์šฉ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ณ  ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Zap Logger๋Š” ๋‹จ์ˆœ์„ฑ๊ณผ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์ด ๋‹๋ณด์ž…๋‹ˆ๋‹ค. Zap์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๋กœ๊น…์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ๋กœ๊น…ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋‚ด์žฅ ์‚ฌ์ „ ์„ค์ •: Zap์—๋Š” NewProduction() ๋ฐ NewDevelopment() ๊ฐ™์€ ํŽธ๋ฆฌํ•œ ์‚ฌ์ „ ์„ค์ •์ด ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์„ค์ •์€ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ƒ์‚ฐ์— ์ ํ•ฉํ•œ ๊ณ ์„ฑ๋Šฅ๊ณผ ๋‚ฎ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์šฐ์„ ์‹œํ•˜๋„๋ก Zap์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด, ํ›„์ž๋Š” ๊ฐœ๋ฐœ ์ค‘์— ์ด์ƒ์ ์ธ ๋” ๋งŽ์€ ์žฅํ™ฉํ•จ๊ณผ ์ธ๊ฐ„ ์นœํ™”์ ์ธ ํ˜•์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Logger ๋ฐ SugaredLogger: Zap์€ Logger ๋ฐ SugaredLogger ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋กœ๊ฑฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Logger ๊ฐ•๋ ฅํ•œ ํ˜•์‹์˜ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ๋” ๋น ๋ฅด์ง€๋งŒ ๊ตฌ๋ฌธ์ด ๋” ์žฅํ™ฉํ•ฉ๋‹ˆ๋‹ค. SugaredLogger ๋Š” ์•ฝ๊ฐ„ ๋А๋ฆฌ์ง€๋งŒ ์นœ์ˆ™ํ•œ printf ์Šคํƒ€์ผ ๋กœ๊น… ๊ธฐ๋Šฅ๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ API๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ ์ˆ˜์ค€: Zap์€ ๋””๋ฒ„๊ทธ, ์ •๋ณด, ๊ฒฝ๊ณ , ์˜ค๋ฅ˜, DPanic, Panic ๋ฐ Fatal๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋กœ๊น… ์ˆ˜์ค€์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ˆ˜์ค€์—๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด ๊ธฐ๋ก๋˜๋Š” ๋‚ด์šฉ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, logger.Info() ์ •๋ณด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ˜๋ฉด, logger.Debug() ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค.
  • ๋น ๋ฅด๊ณ  ํ• ๋‹น์ด ํ•„์š” ์—†์Œ: ๊ธฐ๋ณธ์ ์œผ๋กœ Zap์€ ํ• ๋‹น์ด ํ•„์š” ์—†๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆํ•„์š”ํ•œ ๊ฐ€๋น„์ง€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘์„ ์œ„ํ•œ ์ผ์‹œ ์ค‘์ง€ ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ˜์‚ฌ๊ฐ€ ์—†๊ณ  ์œ ํ˜•์ด ์•ˆ์ „ํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ํ•„๋“œ ๋ฐ ์ปจํ…์ŠคํŠธ: Zap์€ ๊ตฌ์กฐํ™”๋œ ์ปจํ…์ŠคํŠธ๋กœ ๋กœ๊ทธ๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” Fields ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์— ํ‚ค-๊ฐ’ ์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ์ด๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰, ํ•„ํ„ฐ๋ง ๋ฐ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, logger.Info("User logged in", zap.String("username", "jdoe")) ๋กœ๊ทธ ํ•ญ๋ชฉ์— ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•ต์‹ฌ ๊ฐœ๋…์„ ํŒŒ์•…ํ•˜๋ฉด Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Zap์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฌ๊ณ ํ•œ ๊ธฐ๋ฐ˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ฑ์žฅํ•˜๊ณ  ๋กœ๊น… ์š”๊ตฌ์‚ฌํ•ญ์ด ๋”์šฑ ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ Zap์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•˜์—ฌ ํšจ์œจ์ ์ด๊ณ  ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ๋กœ๊น… ์‹œ์Šคํ…œ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๋ฐ ์ƒํ™ฉ๋ณ„ ์ •๋ณด

๋กœ๊น…์€ ํŠนํžˆ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ๋•Œ ๊ฐœ๋ฐœ์ž์˜ ๋ˆˆ๊ณผ ๊ท€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ์™ธ์—๋„ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์€ ๋กœ๊ทธ ํŒŒ์ผ์— ๋†’์€ ์ˆ˜์ค€์˜ ๋ช…ํ™•์„ฑ๊ณผ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณ ๊ธ‰ ๋กœ๊น… โ€‹โ€‹ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ๋ฉ”์‹œ์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ์ปจํ…์ŠคํŠธ์˜ ํ‚ค-๊ฐ’ ์Œ๋„ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ๊ทธ๋ฅผ ํ’๋ถ€ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์€ ์„œ๋น„์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ๋ณต์žกํ•˜๊ณ  ๋ฐฉ๋Œ€ํ•œ ์ตœ์‹  ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ์ผ๊ด€๋˜๊ณ  ๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ž๋™ํ™”๋œ ๋กœ๊ทธ ๋ถ„์„ ๋„๊ตฌ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Zap Logger์˜ ๊ตฌ์กฐ ์ดํ•ด

Zap Logger ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๋กœ๊ทธ ํ•ญ๋ชฉ์— ํ•„๋“œ ํ˜•์‹์œผ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ Go์—์„œ ๋กœ๊ทธ๋ฅผ ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ ์ง„์ ์œผ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ฐฝํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์—๋Š” ๊ธฐ๋ก๋˜๋Š” ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ถ”๊ฐ€ ํ•„๋“œ๊ฐ€ ์–ผ๋งˆ๋“ ์ง€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž ์ž‘์—…์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ID, ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•œ ํŠน์ • ์ž‘์—…์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

logger.Info("User action", zap.String("userID", "U123456"), zap.Time("timestamp", time.Now()), zap.String("action", "login"))

์ด ๋กœ๊ทธ ํ•ญ๋ชฉ์€ ์‚ฌ์šฉ์ž ์ž‘์—…์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์ „๋‹ฌํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„ ๋ชจ๋‘ ๋น ๋ฅด๊ฒŒ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฆ‰๊ฐ์ ์ธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐ์  ๋กœ๊น…์˜ ์žฅ์ 

  • ํ–ฅ์ƒ๋œ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ: ๊ฐœ๋ฐœ์ž๋Š” ์‚ฌ์šฉ์ž ID ๋˜๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ ์œ„์ ฏ์œผ๋กœ ๊ฐ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ด€๋ จ ์ด๋ฒคํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋” ๋‚˜์€ ๋ถ„์„: ๋กœ๊ทธ์— ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ’๋ถ€ํ•˜๋ฉด ์ด๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ฐ ์‚ฌ์šฉ์ž ํ–‰๋™์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ: ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋Š” ๋‹ค์–‘ํ•œ ๋กœ๊น… ํ”Œ๋žซํผ์ด๋‚˜ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์‰ฝ๊ฒŒ ํ˜•์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋”์šฑ ๊ฐ„์†Œํ™”๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์—๋Š” ๊ณ ์œ ํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ’๋ถ€ํ•ด์ง€๋Š” ๋™์‹œ์— ๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋„ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ €์žฅ ๋ฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ์ „๋žต์„ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์™€์˜ ํ†ตํ•ฉ

AppMaster ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster Go๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ณ , Zap Logger ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” ํ”Œ๋žซํผ์—์„œ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์˜ ๋น„์ฃผ์–ผ ๋””์ž์ด๋„ˆ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””์ž์ธํ•  ๋•Œ ๋กœ๊ทธ๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ์ปจํ…์ŠคํŠธ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ์•ฑ ๋””์ž์ธ์— ํฌํ•จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ฏธ๋ฆฌ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์€ ๋กœ๊น… ์ „๋žต์— ๊นŠ์ด ์žˆ๋Š” ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Go์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Zap Logger ์ €์žฅ์†Œ, ํ•ธ๋“ค๋Ÿฌ ๋ฐ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋˜์–ด ๊ฐœ๋ฐœ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ „๋ฐ˜์— ๊ฑธ์ณ ์œ ์šฉํ•œ ํ’๋ถ€ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…: ๋””๋ฒ„๊ทธ, ์ •๋ณด, ์˜ค๋ฅ˜ ๋“ฑ

Go ๋ฐฑ์—”๋“œ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜์„ธ์š”
Go ๋ฐฑ์—”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ณ , ํ•ต์‹ฌ ์ง€์ ์— ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
AppMaster ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

ํšจ์œจ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์˜ ๋ฌธ์ œ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ธ๋ถ€์ ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…์ด ์ž‘๋™ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. Zap๊ณผ ๊ฐ™์€ ๋กœ๊น… ์‹œ์Šคํ…œ์„ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ†ตํ•ฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์„ ํ†ตํ•ด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ์‹ฌ๊ฐ๋„์™€ ์ค‘์š”์„ฑ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด์™€ ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋กœ๊น… ์ˆ˜์ค€ ์ดํ•ด

๋กœ๊น… ์ˆ˜์ค€์€ ๋ชฉ์ ๊ณผ ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ์ฒด๊ณ„์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ ์ˆ˜์ค€์€ ๊ฐœ๋ฐœ์ž๋‚˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ๊ด€์‹ฌ์ด๋‚˜ ๊ด€์‹ฌ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Zap Logger์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ ์ˆ˜์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋””๋ฒ„๊ทธ : ์ด ์ˆ˜์ค€์€ ์ž์„ธํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๊ฐœ๋ฐœ ๊ด€๋ จ ํ†ต์ฐฐ๋ ฅ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์˜ ๋กœ๊ทธ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋˜๋Š” ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ •๋ณด : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ฐ˜์ ์ธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ฐ•์กฐํ•˜๋Š” ์ •๋ณด ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ˜๋“œ์‹œ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„๊ณผ ์ค‘์š”ํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๊ณ  : ๊ฒฝ๊ณ ๋Š” ์ค‘์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ด๋ฒคํŠธ๋‚˜ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ฌ๋ฐ”๋ฅธ ์ž‘๋™์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š” ์ž ์žฌ์ ์ธ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Error : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ ์ฆ‰๊ฐ์ ์ธ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • DPanic : ์ด ๋กœ๊ทธ๋Š” ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ์—๋Š” ์ข…๋ฃŒ๋˜์ง€ ์•Š์ง€๋งŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋กœ๊น… ํ›„ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจ๋‹‰ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์ด ์ˆ˜์ค€์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์†์ƒ๋œ ์ƒํƒœ์™€ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ์ค‘์ง€ํ•ด์•ผ ํ•˜๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • Fatal : ์น˜๋ช…์  ๋กœ๊ทธ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์˜ ๋กœ๊ทธ๊ฐ€ ์บก์ฒ˜๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•œ ํ›„ os.Exit(1) ํ˜ธ์ถœํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง์ ‘ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

Zap์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น… ๊ตฌํ˜„

Zap์„ Go ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹ค์–‘ํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Initialize the logger with Debug levellogger, _ := zap.NewDevelopment()// Typical level-based logging exampleslogger.Debug("This is a Debug message: verbose info for troubleshooting.")logger.Info("This is an Info message: everything is running smoothly.")logger.Warn("This is a Warn message: something you should check out.")logger.Error("This is an Error message: action must be taken to resolve.")

์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น…์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ์‹ฌ๊ฐ๋„๋‚˜ ์ค‘์š”์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go ํ”„๋กœ์ ํŠธ์—์„œ ๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…์˜ ์ด์ 

๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…์€ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์‹ฌ๊ฐ๋„์— ๋”ฐ๋ผ ํŠน์ • ๋ฌธ์ œ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๋•์…˜์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์—๊ฒŒ๋„ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zap์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น… ์‹œ์Šคํ…œ์ด ์žˆ์œผ๋ฉด ํŠน์ • ๋กœ๊ทธ ์ˆ˜์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋„๋ก ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์˜ˆ๋ฐฉ์  ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋กœ๊น… ์ ‘๊ทผ ๋ฐฉ์‹์„ AppMaster ์—์„œ ์ œ์ž‘๋œ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ†ตํ•ฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž์˜ ๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ„์†Œํ™”๋ฉ๋‹ˆ๋‹ค. AppMaster ์˜ ์ •๊ตํ•œ no-code ๋ฐฑ์—”๋“œ ์ƒ์„ฑ์€ ์ƒ์„ฑ๋œ Go ์ฝ”๋“œ์— ์˜ฌ๋ฐ”๋ฅธ ์ˆ˜์ค€์˜ ์ ์ ˆํ•œ ๋กœ๊น… ๋ฌธ์ด ํฌํ•จ๋˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ no-code ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ๊ณผ ์ˆ˜์ค€ ๊ธฐ๋ฐ˜ ๋กœ๊น…์˜ ์ •ํ™•์„ฑ์„ ๋ชจ๋‘ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ๋กœ๊น… ์†”๋ฃจ์…˜์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ค€๋ณ„๋กœ ๊ตฌ์กฐํ™”ํ•˜๋ฉด ๋ถ„์„์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ž˜ ๊ตฌ์„ฑ๋˜๋ฏ€๋กœ ๋กœ๊ทธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์„ ๋ณ„ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์–ด ๋ฐ˜๋ณต ๊ฐœ๋ฐœ ๋ฐ ํ’ˆ์งˆ ๋ณด์ฆ ํ”„๋กœ์„ธ์Šค์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Zap์—์„œ ๋กœ๊ทธ ์ˆ˜์ค€ ๊ตฌ์„ฑ

Zap์—์„œ ์›ํ•˜๋Š” ๋กœ๊ทธ ์ˆ˜์ค€ ์ž„๊ณ„๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ตœ์†Œ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์„ค์ •ํ•˜๋ฉด ๋กœ๊ทธ ์ถœ๋ ฅ์˜ ์ž์„ธํ•œ ์ •๋„๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฒฝ๊ณ , ์˜ค๋ฅ˜ ๋ฐ ์น˜๋ช…์ ์ธ ๋ฉ”์‹œ์ง€๋งŒ ๊ธฐ๋ก๋˜๋Š” ์„ค์ • ์˜ˆ์ž…๋‹ˆ๋‹ค.

config := zap.Config{ // set other necessary configuration fields Level: zap.NewAtomicLevelAt(zap.WarnLevel),}logger, err := config.Build()if err != nil { log.Fatalf("error initializing logger: %v", err)}// This message will not be logged because its level is below the thresholdlogger.Debug("You will not see this message.")// These messages will be loggedlogger.Warn("A potential issue detected.")logger.Error("Error encountered during process X.")

Zap๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…์„ ๊ตฌํ˜„ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ Go์—์„œ ๋”์šฑ ์ง€๋Šฅ์ ์ด๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•œ ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ฐ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋ฉฐ ์‹œ์Šคํ…œ์ด ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค.

Zap์ด ์ œ๊ณตํ•˜๋Š” ๋ ˆ๋ฒจ ๊ธฐ๋ฐ˜ ๋กœ๊น…์„ ๋งˆ์Šคํ„ฐํ•˜๋ฉด Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ œ์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•ˆ์ •์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๋ฉฐ ์ง€์›ํ•˜๊ธฐ ์‰ฌ์šด ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ํŒ: Zap Logger๋กœ AppMaster ๊ฐ•ํ™”

AppMasterno-code ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— Zap Logger๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๊ฐ€์‹œ์„ฑ๊ณผ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Zap Logger๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๊ธฐ๋Šฅ์œผ๋กœ AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์‹ค์šฉ์ ์ธ ํŒ์ž…๋‹ˆ๋‹ค.

AppMaster ์˜ ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ์ดํ•ด

Zap Logger๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ์ „์— AppMaster ํ”Œ๋žซํผ์—์„œ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ Go๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ๋น„ ์ €์žฅ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ ๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋งž๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Zap Logger์™€ ๊ฐ™์€ ํšจ์œจ์ ์ธ ๋กœ๊น… ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊น… ์ „๋žต ์‚ฌ์šฉ์ž ์ •์˜

AppMaster ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์ง€๋งŒ Zap Logger๋กœ ์ด๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ๊ณ ๊ธ‰ ๋กœ๊น… โ€‹โ€‹์ „๋žต์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ ํ๋ฆ„, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋˜๋Š” API endpoint ์•ก์„ธ์Šค์™€ ๊ฐ™์€ ์„ธ๋ถ€ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์–ด๋А ๋ถ€๋ถ„์ด ๊ฐ€์žฅ ํฐ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์‹๋ณ„ํ•˜์‹ญ์‹œ์˜ค.

Zap ๋กœ๊ฑฐ ์„ค์ •

Enterprise ๊ตฌ๋…์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ Zap Logger๋ฅผ Go ์†Œ์Šค ์ฝ”๋“œ์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zap ๋กœ๊น… ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋กœ๊ฑฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ Zap์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ์ˆ˜์ค€ ๊ตฌ์„ฑ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๋ถ€๋ถ„์— ์ ํ•ฉํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์„ ํƒํ•˜์„ธ์š”. ๋””๋ฒ„๊ทธ ์ˆ˜์ค€์€ ๊ฐœ๋ฐœ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋งค์šฐ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์žฅํ™ฉํ•จ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ณด ๋˜๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ค€์œผ๋กœ ์ดˆ์ ์„ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์„ค๊ณ„๋œ ์ˆ˜๋ช… ์ฃผ๊ธฐ ํ›„ํฌ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ด๋Ÿฌํ•œ ์ˆ˜์ค€์„ ์‹ ์ค‘ํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜์‹ญ์‹œ์˜ค.

๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋กœ๊น…

AppMaster ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์‹œ๊ฐ์  ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค(BP)๋ฅผ ํ†ตํ•ด ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์–‘ํ•œ ๋‹จ๊ณ„์—์„œ ๋กœ๊น… ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์คŒ์œผ๋กœ์จ Zap Logger๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ BP๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋Ÿฐํƒ€์ž„์— ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋กœ๊น…ํ•˜์—ฌ Zap์˜ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์„ธ์š”. ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋Š” ํŒจํ„ด์„ ๊ด€์ฐฐํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋…ธ๋ ฅ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด€๋ จ ํ•„๋“œ ๋ฐ ๊ฐ์ฒด๋กœ ๋กœ๊ทธ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋น„๋™๊ธฐ ๋กœ๊น…

๋กœ๊น… ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋น„๋™๊ธฐ ๋กœ๊น…์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•œ AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Zap Logger๋Š” AppMaster ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธํ”„๋ผ ๋‚ด์—์„œ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋™๊ธฐ ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฒฝ๊ณ 

๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์— ํ†ตํ•ฉํ•˜์—ฌ ๋กœ๊ทธ ํŒจํ„ด์ด๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์— ๋”ฐ๋ผ ์•Œ๋ฆผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์˜ˆ๋ฐฉ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ํŠน์ • ๋กœ๊ทธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์•„ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์‚ฌ๊ณ  ๋Œ€์‘ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ํšŒ์ „ ๋ฐ ์ง€์†์„ฑ ์ฒ˜๋ฆฌ

ํŠนํžˆ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ ์ €์žฅ ๋ฐ ์ˆœํ™˜์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Zap Logger๋Š” ํšจ์œจ์ ์œผ๋กœ ๋กœ๊น…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋””์Šคํฌ ๊ณต๊ฐ„ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ง€์†์„ฑ ๋ฐ ์ˆœํ™˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

Zap Logger ๊ตฌํ˜„์„ ์œ„ํ•œ ์ด๋Ÿฌํ•œ ํ†ตํ•ฉ ํŒ์„ ๋”ฐ๋ฅด๋ฉด AppMaster ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ์„ฑ, ๋””๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋ฐฉ๋ฒ•์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด ํ•ญ์ƒ ์ตœ์‹  ๋ฌธ์„œ์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€ํ–‰์„ ๊ฒ€ํ† ํ•˜์„ธ์š”.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ Zap ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€

๋ฐ์ดํ„ฐ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์„ค๊ณ„ํ•˜์„ธ์š”
PostgreSQL ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ  Go ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ์„ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๊ฐ•๋ ฅํ•œ ๋กœ๊น… ์‹œ์Šคํ…œ์€ ํ”„๋กœ๋•์…˜ ๋“ฑ๊ธ‰ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ๊ด€์ฐฐํ•˜๋Š” ์ดˆ์„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ Zap Logger๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋กœ๊น…์ด ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์ด๋ฉฐ ์•ˆ์ „ํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์•ˆ์ •์ ์ธ ์ƒ์‚ฐ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•˜๋ฉด์„œ Zap Logger์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ๋กœ๊น… ๊ตฌ์„ฑ

ํ”„๋กœ๋•์…˜ ๋กœ๊ทธ์ธ์˜ ์ฃผ์š” ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ์‹ ๋กœ๊ทธ ์“ฐ๊ธฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ ์ž ์žฌ์ ์ธ ์†๋„ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์™„ํ™”ํ•˜๋ ค๋ฉด Zap์˜ ๋น„๋™๊ธฐ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ๊ฑฐ๋Š” ๋ฒ„ํผ๋ง๋œ WriteSyncer ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ ์“ฐ๊ธฐ๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์˜ ๋Œ€์ƒ์œผ๋กœ ํ”Œ๋Ÿฌ์‹œ๋˜๋Š” ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณ„์† ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›์ž ์ˆ˜์ค€ ์ „ํ™˜ ์‚ฌ์šฉ

ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋กœ๊น…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ˆ˜์ค€์ด ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐœ๋ฐœ์—์„œ๋Š” ์ž์„ธํ•œ '๋””๋ฒ„๊ทธ' ๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ๋•์…˜์—์„œ๋Š” '์˜ค๋ฅ˜' ์ˆ˜์ค€ ๋กœ๊ทธ๊ฐ€ ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zap์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ƒˆ ๋กœ๊ฑฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋Ÿฐํƒ€์ž„ ์‹œ ๋ ˆ๋ฒจ์„ ์›์ž์ ์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์šด์˜ ํ™˜๊ฒฝ์ด๋‚˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋™์  ๋กœ๊ทธ ์ˆ˜์ค€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…

๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋Š” ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ธฐ๊ณ„์—์„œ๋„ ๋” ์‰ฝ๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zap์€ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์— ํƒ์›”ํ•˜์—ฌ ํ’๋ถ€ํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ํ•„๋“œ๋ฅผ ํ†ตํ•œ ๋””๋ฒ„๊น… ๋ฐ ์ถ”์ ์— ๋„์›€์ด ๋˜๋Š” ๊ด€๋ จ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋กœ ๋กœ๊ทธ๋ฅผ ๊ฐ•ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์š”์ฒญ ID, ์‚ฌ์šฉ์ž ์‹๋ณ„์ž ๋˜๋Š” ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์Šคํƒ ์ถ”์ ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๋‹ค๋ฃจ์„ธ์š”

๋กœ๊ทธ์—๋Š” ์‹ค์ˆ˜๋กœ ์ค‘์š”ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ, API ํ‚ค ๋˜๋Š” ๊ธฐํƒ€ ๋น„๋ฐ€์ด ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ๋กœ๊ทธ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Zap์„ ์‚ฌ์šฉํ•˜๋ฉด zap.String ๋ฐ zap.Any ์™€ ๊ฐ™์€ ํ•„๋“œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ์•”ํ˜ธํ™”๋˜๋„๋ก ๋ž˜ํ•‘ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆ๋ณ€ ๋กœ๊ฑฐ ๊ตฌ์„ฑ

๋กœ๊น…์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ๋กœ๊ฑฐ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋กœ๊ฑฐ๋ฅผ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๊ณ  ๋‚˜์ค‘์— ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋กœ๊น… ๋™์ž‘์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ”„๋กœ๋•์…˜์— ์ฆ‰์‹œ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ์Šน๊ฒฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ์ง‘๊ณ„ ๋ฐ ๋ถ„์„

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถ„์„ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด ๋กœ๊ทธ๋ฅผ ์ค‘์•™ ๋กœ๊น… ์‹œ์Šคํ…œ์— ์ง‘๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ํ†ตํ•ฉ๋œ ๋กœ๊น…์€ JSON ํ˜•์‹์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” Zap์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณ ๊ธ‰ ์ฟผ๋ฆฌ, ๊ฒฝ๊ณ  ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด ELK ์Šคํƒ(Elasticsearch, Logstash, Kibana) ๋˜๋Š” Splunk์™€ ๊ฐ™์€ ๋กœ๊ทธ ์ง‘๊ณ„ ๋„๊ตฌ๋กœ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์› ํ• ๋‹น ๋ฐ ๊ด€๋ฆฌ

Zap์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋Š” ๋™์‹œ์— ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ ๋ณผ๋ฅจ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์•ฑ๊ณผ ๋กœ๊น… ํ™œ๋™ ๋ชจ๋‘์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜์„ธ์š”. ๋˜ํ•œ ํŒŒ์ผ ์ˆœํ™˜ ๋ฐ ๋ณด๊ด€ ์ •์ฑ…์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋””์Šคํฌ ๊ณต๊ฐ„ ์†Œ๋น„๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฒฝ๊ณ 

๋กœ๊น…์€ ์ด๋ฒคํŠธ ํ›„ ๋ถ„์„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฒฝ๊ณ ์—๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋กœ๊ทธ ํŒจํ„ด์ด๋‚˜ ์˜ค๋ฅ˜์œจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋„๋ก ๋กœ๊ทธ ์ง‘๊ณ„ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์ „์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊น… ๊ด€ํ–‰์˜ ์ •๊ธฐ์ ์ธ ๊ฒ€ํ† 

๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๋„๊ตฌ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•จ๊ป˜ ๋ฐœ์ „ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊น… ๊ตฌ์„ฑ ๋ฐ ๊ด€ํ–‰์„ ์ •๊ธฐ์ ์œผ๋กœ ๊ฒ€ํ† ํ•˜์—ฌ Zap ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ตœ์‹  ๊ถŒ์žฅ ์‚ฌํ•ญ, ๋กœ๊น… ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ ๊ทœ์ œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(ํŠนํžˆ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ์™€ ๊ด€๋ จ๋œ)์— ๋ถ€ํ•ฉํ•˜๋„๋ก ํ•˜์„ธ์š”.

์ด๋Ÿฌํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉด Zap Logger์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ๋•์…˜์—์„œ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๊ณ  ๋ฌธ์ œ ์—†์ด ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…์€ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์•ฑ์šฉ์œผ๋กœ ์ƒ์„ฑ๋œ Go ๋ฐฑ์—”๋“œ๊ฐ€ Zap์ด ์ œ๊ณตํ•˜๋Š” ๊ตฌ์กฐํ™”๋˜๊ณ  ์ œ์–ด๋˜๋ฉฐ ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ๋กœ๊น…์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋Š” AppMaster ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ๊ณผ ํ˜ธํ™˜๋œ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊น… ๋ฐฉ์‹์˜ ์ง€์†์ ์ธ ๊ฐœ์„ ์„ ํ†ตํ•ด ์‹œ์Šคํ…œ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅ์„ฑ์ด ๋”์šฑ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zap Logger์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ

๋””๋ฒ„๊น…์˜ ์ถ”์ธก ์š”์†Œ๋ฅผ ์ค„์ด์„ธ์š”
๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋กœ ๋ฐฑ์—”๋“œ์˜ ์ฃผ์š” ํ๋ฆ„์„ ์ถ”์ ํ•ด ๋” ๋น ๋ฅด๊ฒŒ ๋””๋ฒ„๊น…ํ•˜์„ธ์š”.
์ง€๊ธˆ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” ์•ˆ์ •์ ์ธ ๋กœ๊น… ์‹œ์Šคํ…œ์˜ ์ค‘์š”์„ฑ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ Zap Logger์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์„ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ†ตํ•ฉํ•  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” Zap Logger์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์™€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๋ช…ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋กœ๊น…์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™” ์‹คํŒจ ์ง„๋‹จ

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ๋กœ๊ฑฐ๋ฅผ ์ œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฌ์„ฑ ์„ค์ •์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด:

  • ๊ตฌ์„ฑ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๊ตฌ์„ฑ์ด ์œ ํšจํ•œ JSON ๋˜๋Š” ๊ตฌ์กฐํ™”๋œ ๊ฐ์ฒด์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • ์ตœ์‹  ๋ฒ„์ „์˜ Zap์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€, ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ถฉ๋Œ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • ์˜ฌ๋ฐ”๋ฅธ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Go ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ Zap์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค์„ธ์š”.

๋กœ๊ทธ ์ˆ˜์ค€ ๊ตฌ์„ฑ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

Zap์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „์—ญ์ ์œผ๋กœ ๊ฐœ๋ณ„ ๋กœ๊ฑฐ์— ๋Œ€ํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ์ˆ˜์ค€์„ ์ž˜๋ชป ๊ตฌ์„ฑํ•˜๋ฉด ์ค‘์š”ํ•œ ๋กœ๊ทธ ํ•ญ๋ชฉ์ด ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ์ˆ˜์ค€ ๊ตฌ์„ฑ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์˜์‹ฌ๋˜๋Š” ๊ฒฝ์šฐ:

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธ€๋กœ๋ฒŒ ๋กœ๊ทธ ์ˆ˜์ค€ ๊ตฌ์„ฑ์„ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.
  • ํŠน์ • ๋กœ๊ทธ ์ˆ˜์ค€์ด ์„ค์ •๋œ ๋กœ๊ฑฐ ์ธ์Šคํ„ด์Šค์˜ ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜์„ธ์š”.
  • ์˜๋„ํ•˜์ง€ ์•Š์€ ํ•œ ๋กœ๊ฑฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹ค์ˆ˜๋กœ ์ „์—ญ ์„ค์ •์„ ์žฌ์ •์˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ ์ ˆํ•œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ ๋ณด์žฅ

Zap Logger๋Š” ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์— ํƒ์›”ํ•˜์ง€๋งŒ ๊ตฌ์กฐ๊ฐ€ ์ž˜๋ชป๋˜๋ฉด ๋กœ๊ทธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ถˆ์™„์ „ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋˜๋„๋ก ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  • ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด zap.String() , zap.Int() ๋“ฑ๊ณผ ๊ฐ™์ด ์ œ๊ณต๋œ Zap ํ•„๋“œ ์ƒ์„ฑ์ž๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ๊ธฐ๋ก๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • ๋กœ๊ทธ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ๋ถ„์„์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ž์ฃผ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋น„๋™๊ธฐ ๋กœ๊น… ๋ฌธ์ œ ๋””๋ฒ„๊น…

์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋น„๋™๊ธฐ ๋กœ๊น…์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๋˜๋Š” ์กฐ๊ธฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ๋กœ ์ธํ•ด ์ผ๋ถ€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ๋ชจ๋“œ์—์„œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ์†์‹ค๋˜๋Š” ๊ฒฝ์šฐ:

  • zap.Buffer() ๊ตฌ์„ฑ์˜ ํฌ๊ธฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๊น… ๋ณผ๋ฅจ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ๋กœ๊ทธ ๋ฒ„ํผ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ์ ์ ˆํ•œ ์ข…๋ฃŒ ํ›„ํฌ๋ฅผ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค.
  • ๋ฉ”์‹œ์ง€ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ๋กœ๊น…์„ ์œ„ํ•ด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋™๊ธฐ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๋กœ๊ทธ ํšŒ์ „ ๋ฐ ํŒŒ์ผ ๊ด€๋ฆฌ

๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ, ๋กœ๊ทธ ์ˆœํ™˜์„ ์ž˜๋ชป ๊ตฌ์„ฑํ•˜๋ฉด ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ:

  • Zap์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๊ธฐ๋Šฅ์ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํƒ€์‚ฌ ๋กœ๊ทธ ํšŒ์ „ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ฉํ•˜์„ธ์š”.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๊น… ๋นˆ๋„ ๋ฐ ์ €์žฅ ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ํŒŒ์ผ ํฌ๊ธฐ ๋ฐ ํšŒ์ „ ํšŸ์ˆ˜์™€ ๊ฐ™์€ ๋กœ๊ทธ ํšŒ์ „ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ ํŒŒ์ผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์ž๋™ ์ˆœํ™˜ ๋ฐ ์ •๋ฆฌ ์ž‘์—…์ด ๊ตฌ์„ฑ๋œ ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

Zap Logger ๋ฌธ์ œ ํ•ด๊ฒฐ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌ์„ฑ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ๋กœ๊ฑฐ๊ฐ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ์˜ต์…˜์œผ๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. AppMaster ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ์™€ ํ†ตํ•ฉํ•  ๋•Œ ๋กœ๊น… ์„ค์ •์ด ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ๊ณ ์œ ํ•œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ๋„ ๊ณ ๋ คํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›

Zap Logger๋ฅผ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •์€ ์ดˆ๊ธฐ ์„ค์ • ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์—์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Go ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ํ™œ๋ฐœํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๊ฐ€ ํ’๋ถ€ํ•˜์—ฌ ์ง€์†์ ์ธ ํ•™์Šต๊ณผ ๊ฐœ์„ ์ด ๋งค์šฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ท€์ค‘ํ•œ ๋ฆฌ์†Œ์Šค์™€ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๊ณต์‹ Zap Logger ๋ฌธ์„œ

Zap Logger์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์žฅ์†Œ๋Š” ๊ณต์‹ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์ด ์†Œ์Šค๋Š” ์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๊ถŒ์œ„ ์žˆ๋Š” ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Zap์ด ์ œ๊ณตํ•˜๋Š” ๋กœ๊น… ์ˆ˜์ค€ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ •๋ณด๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜จ๋ผ์ธ ํฌ๋Ÿผ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ

Stack Overflow ๋ฐ Reddit์˜ r/golang๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์€ Zap Logger๋ฅผ ํฌํ•จํ•œ Go ๋ฐ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ํ† ๋ก ์œผ๋กœ ๋ถ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์ด ํฌ๋Ÿผ์€ ์งˆ๋ฌธ์„ ํ•˜๊ณ , ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ , ๋‹ค๋ฅธ Go ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

Go ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ๋ฐ ๋ชจ์ž„

์ง€์—ญ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน๊ณผ ๋ชจ์ž„์€ ๋‹ค๋ฅธ Go ๊ฐœ๋ฐœ์ž์™€ ์ง์ ‘ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Meetup.com๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์„ ํ™•์ธํ•˜์—ฌ Zap Logger ๋ฐ ๊ธฐํƒ€ Go ๊ด€๋ จ ์ฃผ์ œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ทผ์ฒ˜์˜ ์ด๋ฒคํŠธ์™€ ๊ทธ๋ฃน์„ ์ฐพ์œผ์„ธ์š”.

GitHub ์ €์žฅ์†Œ ๋ฐ ๋ฌธ์ œ

Zap Logger์šฉ GitHub ์ €์žฅ์†Œ๋Š” ๋‹จ์ง€ ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•˜๋Š” ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฒ„๊ทธ๋ฅผ ๋ณด๊ณ ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๊ณ , ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฌธ์ œ์™€ ํ† ๋ก ์„ ๊ฒ€ํ† ํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์™€ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠœํ† ๋ฆฌ์–ผ ๋ฐ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ

์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํŠœํ† ๋ฆฌ์–ผ๊ณผ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์œ ์ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ธ”๋กœ๊ฑฐ๊ฐ€ Zap Logger ์‚ฌ์šฉ ๊ฒฝํ—˜์— ๋Œ€ํ•œ ์‹ฌ์ธต์ ์ธ ๊ธฐ์‚ฌ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‹ค์šฉ์ ์ธ ํŒ๊ณผ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์›น ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ˆ˜๋งŽ์€ ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ์™€ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋””์˜ค ๋ฐ ์›น ์„ธ๋ฏธ๋‚˜

์‹œ๊ฐ์  ํ•™์Šต์ž๋Š” ๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ๊ณผ ์›น ์„ธ๋ฏธ๋‚˜๋ฅผ ํ†ตํ•ด ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YouTube์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ๋Š” Go์˜ ๋กœ๊น… ๋ฐฉ์‹๊ณผ Zap Logger ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ต์œก์šฉ ๋น„๋””์˜ค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ฝ˜ํ…์ธ  ์ œ์ž‘์ž๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ๊ฐœ๋…์˜ ์‹ค์ œ ๊ตฌํ˜„์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฌธ ๊ต์œก ๋ฐ ์›Œํฌ์ˆ

์ฒด๊ณ„์ ์ธ ํ•™์Šต ๊ฒฝํ—˜์„ ์„ ํ˜ธํ•œ๋‹ค๋ฉด ์ „๋ฌธ ๊ต์œก ๊ณผ์ •๊ณผ ์›Œํฌ์ˆ์„ ๊ณ ๋ คํ•ด ๋ณด์„ธ์š”. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—…๊ณ„ ์ „๋ฌธ๊ฐ€๊ฐ€ ๊ฐ€๋ฅด์น˜๋ฉฐ Zap Logger๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ณ ๊ธ‰ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ปค๋ฆฌํ˜๋Ÿผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ™•๋ฆฝ๋œ ๋„๊ตฌ์™€์˜ ํ†ตํ•ฉ ์˜ˆ

๋‹ค๋ฅธ ๋„๊ตฌ ๋ฐ ํ”Œ๋žซํผ๊ณผ์˜ ํ†ตํ•ฉ ์‚ฌ๋ก€๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด Go ํ”„๋กœ์ ํŠธ ๊ฐœ์„ ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, AppMaster ์—์„œ๋Š” ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Zap Logger์˜ ํ˜ธํ™˜์„ฑ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด no-code ํ”Œ๋žซํผ์—์„œ ์ƒ์„ฑ๋œ ์•ฑ์˜ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐœ๋‹ฌ์€ ํ•™์Šต๊ณผ ์—ฐ์Šต์˜ ์ง€์†์ ์ธ ๊ณผ์ •์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘๋ ฅํ•˜๋ฉด Zap Logger๋ฅผ ๋งˆ์Šคํ„ฐํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Go ๊ฐœ๋ฐœ์˜ ์ตœ์‹  ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ตœ์‹  ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Zap Logger๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Zap Logger๋Š” Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณ ์„ฑ๋Šฅ ๋ฐ ๋™์‹œ์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์†๋„๋ฅผ ์šฐ์„ ์‹œํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ Go ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€์‹  Zap Logger๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ผ๋ถ€ ๊ธฐ์กด ๋กœ๊น… ์‹œ์Šคํ…œ๊ณผ ๋‹ฌ๋ฆฌ Zap Logger๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ CPU ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํšจ์œจ์„ฑ์ด ์ค‘์š”ํ•œ ๊ณ ๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

Go ํ”„๋กœ์ ํŠธ์—์„œ Zap Logger๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋‚˜์š”?

Zap Logger ์„ค์ •์—๋Š” 'go get'์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ฑฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Zap์—์„œ ๋‚ด ๋กœ๊ทธ์— ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, Zap Logger๋Š” ๋กœ๊ทธ์— ์ปจํ…์ŠคํŠธ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‰ฝ๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Zap์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Zap์€ ๋””๋ฒ„๊ทธ, ์ •๋ณด, ๊ฒฝ๊ณ , ์˜ค๋ฅ˜, dpanic, ํŒจ๋‹‰, ์น˜๋ช…์  ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์ œ๊ณตํ•˜์—ฌ ๋กœ๊น… ์ถœ๋ ฅ์„ ์„ธ๋ถ€์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zap Logger๋ฅผ AppMaster.io์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, Zap Logger๋Š” AppMaster.io ํ”Œ๋žซํผ์—์„œ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ตํ•ฉ๋˜์–ด no-code ๋„๊ตฌ ์„ธํŠธ๋กœ ๊ฐœ๋ฐœ๋œ ์•ฑ์˜ ๋กœ๊น… ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์—์„œ Zap Logger๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๋น„๋™๊ธฐ ๋กœ๊น…์„ ์œ„ํ•ด Zap์„ ๊ตฌ์„ฑํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ๊ทธ ์ˆ˜์ค€์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ , ๋กœ๊ทธ ์ถœ๋ ฅ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Zap ์‚ฌ์šฉ ์‹œ ๋กœ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

Zap ๋ฌธ์ œ ํ•ด๊ฒฐ์—๋Š” ๋กœ๊ทธ ๊ตฌ์„ฑ ํ™•์ธ, ์ ์ ˆํ•œ ๋กœ๊ทธ ์ˆ˜์ค€ ์‚ฌ์šฉ ํ™•์ธ, ๋กœ๊ทธ ๋‚ด์˜ ์˜ฌ๋ฐ”๋ฅธ ์ปจํ…์ŠคํŠธ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Zap Logger๋Š” ํŒŒ์ผ ํšŒ์ „ ๋ฐ ๋กœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, Zap์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋˜๋Š” ๋กœ๊ฑฐ์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์‚ฌ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ ํšŒ์ „ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Zap Logger์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋‚˜์š”?

Go ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ Zap Logger๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ, ํŠœํ† ๋ฆฌ์–ผ, ํฌ๋Ÿผ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
Zap Logger๋กœ Go ํ–ฅ์ƒ: ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ | AppMaster