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 ์ค์ ์ ์์ํ๊ธฐ ์ ์ ๋ค์ ์ ์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์๋์ง ํ์ธํ์ธ์.
- ์๋ํ๋ Go ํ๊ฒฝ.
- Go ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ฐ ๋ชจ๋์ ๋ํ ๊ธฐ๋ณธ ์ง์.
- ๋ก๊น ์ ๊ตฌํํ๋ ค๋ ๊ธฐ์กด 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 ์ ์ฅ์, ํธ๋ค๋ฌ ๋ฐ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ฐ์ค๋ฝ๊ณ ํจ์จ์ ์ผ๋ก ๊ธฐ๋กํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ก๊ทธ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ์ ์ฉํ๊ฒ ํ์ฉ๋์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉํ ํ๋ถํ๊ณ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ ๋ฒจ ๊ธฐ๋ฐ ๋ก๊น : ๋๋ฒ๊ทธ, ์ ๋ณด, ์ค๋ฅ ๋ฑ
ํจ์จ์ ์ธ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ๋ฌธ์ ์ ํ๋ก์ธ์ค๋ฅผ ์ธ๋ถ์ ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ ๋ฒจ ๊ธฐ๋ฐ ๋ก๊น ์ด ์๋ํ๋ ๊ณณ์ ๋๋ค. 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 ์ฌ์ฉ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก
๊ฐ๋ ฅํ ๋ก๊น ์์คํ ์ ํ๋ก๋์ ๋ฑ๊ธ ์ํํธ์จ์ด๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ด์ฐฐํ๋ ์ด์์ ๋๋ค. ํ๋ก๋์ ์์ 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 ๊ฐ๋ฐ์ ์ต์ ์ฌ๋ก์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Zap Logger๋ Go ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ฑ๋ฅ ๋ฐ ๋์์ฑ์ ์ํด ์ค๊ณ๋ ๊ตฌ์กฐํ๋ ๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์๋๋ฅผ ์ฐ์ ์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ธฐ๋กํ ์ ์๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ผ๋ถ ๊ธฐ์กด ๋ก๊น ์์คํ ๊ณผ ๋ฌ๋ฆฌ Zap Logger๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ CPU ์ค๋ฒํค๋๋ฅผ ์ต์ํํ์ฌ ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ํจ์จ์ฑ์ด ์ค์ํ ๊ณ ๋ถํ ์๋๋ฆฌ์ค์ ์ด์์ ์ ๋๋ค.
Zap Logger ์ค์ ์๋ 'go get'์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ๋ก ๊ฐ์ ธ์จ ๋ค์ ํด๋น API๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ฑฐ๋ฅผ ์ด๊ธฐํํ๊ณ ํ์์ ๋ฐ๋ผ ๊ตฌ์ฑํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
์, Zap Logger๋ ๋ก๊ทธ์ ์ปจํ ์คํธ ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ฝ๊ฒ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์๋ ๊ตฌ์กฐํ๋ ๋ก๊น ์ ์ง์ํฉ๋๋ค.
Zap์ ๋๋ฒ๊ทธ, ์ ๋ณด, ๊ฒฝ๊ณ , ์ค๋ฅ, dpanic, ํจ๋, ์น๋ช ์ ๋ฑ์ ๋ค์ํ ๋ก๊ทธ ์์ค์ ์ ๊ณตํ์ฌ ๋ก๊น ์ถ๋ ฅ์ ์ธ๋ถ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
์, Zap Logger๋ AppMaster.io ํ๋ซํผ์์ ์์ฑ๋ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํตํฉ๋์ด no-code ๋๊ตฌ ์ธํธ๋ก ๊ฐ๋ฐ๋ ์ฑ์ ๋ก๊น ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
ํ๋ก๋์ ์์๋ ๋น๋๊ธฐ ๋ก๊น ์ ์ํด Zap์ ๊ตฌ์ฑํ๊ณ , ์ฌ์ฉ์ ์ ์ ๋ก๊ทธ ์์ค์ ์ ์ ํ๊ฒ ์ฌ์ฉํ๊ณ , ๋ก๊ทธ ์ถ๋ ฅ์ด ์์ ํ๊ฒ ์ ์ฅ๋๊ณ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ๋๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Zap ๋ฌธ์ ํด๊ฒฐ์๋ ๋ก๊ทธ ๊ตฌ์ฑ ํ์ธ, ์ ์ ํ ๋ก๊ทธ ์์ค ์ฌ์ฉ ํ์ธ, ๋ก๊ทธ ๋ด์ ์ฌ๋ฐ๋ฅธ ์ปจํ ์คํธ ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ฌ์ฉ์ ๋ํ ์ฝ๋ ๊ฒ์ฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
์, Zap์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ ๋ก๊ฑฐ์ ํตํฉํ ์ ์๋ ํ์ฌ ํจํค์ง๋ฅผ ํตํด ๋ก๊ทธ ํ์ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
Go ์ปค๋ฎค๋ํฐ๋ ๊ฐ๋ฐ์๊ฐ Zap Logger๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์๋ ๋ฌธ์, ํํ ๋ฆฌ์ผ, ํฌ๋ผ ๋ฑ ๋ค์ํ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.


