Zap Logger ã«ãã Go ã®åŒ·å: åå¿è ã¬ã€ã
ãã®åå¿è åãã¬ã€ããéããŠãZap Logger ã䜿çšã㊠Go ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããæ¹æ³ãåŠã³ãŸããããæ§é åãããé«éãã€å¹³æºåããããã®ã³ã°ã®ããã®ãã³ããã芧ãã ããã

ãã®ã³ã°ã¯ ãœãããŠã§ã¢éçº ã«ãšã£ãŠéèŠãªå®è·µã§ãããç¹ã«ãã®ã·ã³ãã«ããšå¹çæ§ã§ç¥ããã Go ã®åéã§ã¯éèŠã§ããé©åãªãã°èšé²ã¯ãéçºè ãåé¡ãè¿ éã«ç¹å®ããã®ã«åœ¹ç«ã¡ãã¢ããªã±ãŒã·ã§ã³ã®åäœãšããã©ãŒãã³ã¹ã«ã€ããŠã®æŽå¯ããªã¢ã«ã¿ã€ã ã§æäŸããŸããæŽ»æ°ã«æºã¡ã Go ãšã³ã·ã¹ãã ã§ã¯ããã®ã³ã°ããããšåãå²åŠã«åœãŠã¯ãŸããŸããã€ãŸãããã®ã³ã°ã¯ç®ç«ãããç°¡åã§ãéåžžã«ããã©ãŒãã³ã¹ãé«ããã®ã§ãªããã°ãªããŸããã
Go ã®åå¿è ã«ãšã£ãŠããã®ã³ã°ãçè§£ããããšã¯åºç€ã§ãã Go ãžã®ãã°ã€ã³ã¯ãåã«ã¹ããŒãã¡ã³ããã³ã³ãœãŒã«ã«åºåããã ãã§ã¯ãããŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³å ã§çºçããã€ãã³ããææžåããäœç³»çãªèšé²ãä¿æããããšã§ãããããã®èšé²ã¯ããããã°ãããã©ãŒãã³ã¹ç£èŠãããã«ã¯ã»ãã¥ãªãã£ç£æ»ã®éèŠãªãã§ãã¯ãã€ã³ãã«ãªããŸãã
Go ã¯ããã€ãã£ã ãã° ããã±ãŒãž log ãæäŸããŸããããã¯ã端æ«ãæå®ããããã¡ã€ã«ãªã©ã®ããŸããŸãªåºåå
ã«ã¡ãã»ãŒãžãåºåãããªã©ã®åºæ¬çãªãã°æ©èœããµããŒãããŸããããããçŸä»£ã®ã¢ããªã±ãŒã·ã§ã³éçºã®çŸå®ã§ã¯ãæšæºã©ã€ãã©ãªãæäŸã§ãã以äžã®ãã®ãèŠæ±ããããšããããããŸããéçºè
ã¯ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªããè€éãªããŒã¿æ§é ããã°ã«èšé²ããããŸããŸãªåºå圢åŒãé©å¿ããããã° ã¡ãã»ãŒãžã®èªã¿ããããåäžãããæ©èœãå¿
èŠãšããŠããŸãã
Go ã®å€æ§ãªããã±ãŒãž ãšã³ã·ã¹ãã ã®å©ç¹ã¯ãéçºè ã«éžæè¢ãäžããããããšã§ããé«éã§æ§é åãããæè»ãªãã®ã³ã°æ©èœã§äººæ°ãéããŠãããªãã·ã§ã³ã® 1 ã€ããZap ãã¬ãŒã§ãã Zap ã¯ãGo ã®ãã«ãã³ã¢ ãªã¢ãªãã£ã®ããã®ãç°åžžã«é«éãªããã¬ãŒãšãªãããã«ãŒãããèšèšãããŠããŸããããã©ãŒãã³ã¹ãšéçºè ã®äœ¿ããããã«éç¹ã眮ããŠãããããéçºç°å¢ãšéçšç°å¢ã«æé©ã§ãã
Go ã§ã®ãã°ã€ã³ã®ä»çµã¿ãšçµ±åã«ã€ããŠè©³ãã説æããåã«ããã°ãæãã圹å²ãèªèããããšãéèŠã§ããããã¯ãåŒã³åºããããšãã·ã¹ãã ã®å±¥æŽããã©ãŒãã³ã¹ãšå éšåäœãæããã«ãããæ²é»ã®èгå¯è ãšããŠæ©èœããŸãããã®ããããšããã©ããã®ãªããã°ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®æé©åã®ããã«ãã°ã粟æ»ãããšãã«ã广çãªãã®ã³ã°ã®çè§£ãšå®è£ ã«æéãæè³ããããšã¯ãå€å€§ãªå©çããããããŸãããã®ã³ã°ã¯ã¢ããªã±ãŒã·ã§ã³ã®ä¿å®æ§ãšãããã°ã®çžã®äžã®åæã¡ã§ãããæ©èœéçºã®ã©ãã·ã¥ã®äžã§èŠèœãšãããããšããããŸãã
Go ã¢ããªã±ãŒã·ã§ã³ã« Zap Logger ãéžæããçç±
ãœãããŠã§ã¢éçºã«é¢ããŠããã°ã¯éçºè ããã°ãã°å¯ŸåŠããªããã°ãªããªãéèŠãªåŽé¢ã§ãã Go ããã°ã©ãã³ã°ã®äžçã§ã¯ãããããç¬èªã®æ©èœãšããã©ãŒãã³ã¹ç¹æ§ãåããããŸããŸãªãã®ã³ã° ã©ã€ãã©ãªãå©çšå¯èœã§ãããããããã®äžã§ãã Zap Logger ã¯ãææ°ã®å¹ççã§ã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ã«åãããŠèª¿æŽãããå質ã§éç«ã£ãŠããŸãã
Zap Logger ã¯å¹³åçãªãã° ã©ã€ãã©ãªã§ã¯ãããŸãããããã©ãŒãã³ã¹ã念é ã«çœ®ããŠç¹å¥ã«èšèšãããŠããŸããä»ã§ã¯ãå€ãã®éçºè ããã®é©ç°çãªé床ãšç¡èŠã§ãã CPU ãªãŒããŒãããã«ã€ããŠèããããšãããã§ãããããããããã㯠Zap ã Go ã¢ããªã±ãŒã·ã§ã³ã«å¥œãŸããçç±ã®è¡šé¢ããªãã£ãã ãã§ãã
- åè¶ããããã©ãŒãã³ã¹: Zap ã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããŠã¡ãã»ãŒãžããã°ã«èšé²ããæ©èœã§éç«ã£ãŠããŸããããã¯ãå°ãªãã¡ã¢ãªå²ãåœãŠãšææ ®æ·±ãæ§é ã«ãã£ãŠå®çŸãããã¬ããŒãž ã³ã¬ã¯ã¿ãŒ (GC) ã®ãªãŒããŒããããåæžããããããé »ç¹ãª GC ã®äžæåæ¢ã«ãã£ãŠåŒãèµ·ããããé å»¶ã®ã¹ãã€ã¯ã蚱容ã§ããªãé«ã¹ã«ãŒããã ã·ã¹ãã ã«ãšã£ãŠçæ³çãªéžæè¢ãšãªããŸãã
- æ§é åãã°: éæ§é åããã¹ããèšé²ããåŸæ¥ã®ãã° ã©ã€ãã©ãªãšã¯ç°ãªããZap ãã°ã¯æ¬è³ªçã« JSON ãªã©ã®åœ¢åŒã§æ§é åãããŠããŸãããã®æ§é åãããã¢ãããŒãã«ããããã°ã®äžè²«æ§ãé«ãŸããæ©æ¢°ãèªã¿åãããããªãã ãã§ãªããç¹ã«åæ£ã·ã¹ãã ã®ã³ã³ããã¹ãã«ãããŠããã°ã®ã¯ãšãªãè§£æãåæã容æã«ãªããŸãã
- ã¬ãã«ãšãµã³ããªã³ã°: Zap ã¯ããã° ã¡ãã»ãŒãžãšãµã³ããªã³ã°æ©èœã®ç·æ¥æ§ãšéèŠæ§ãææ¡ããããã«ãè€æ°ã®ãã° ã¬ãã«ãæäŸããŸããããã¯ãå埩ã¡ãã»ãŒãžã®ãµã³ãã«ã®ã¿ããã°ã«èšé²ããããšã§ãã€ãºãäœæžã§ããããšãæå³ããŸããããã¯ããã° ããŒã¿ã® S/N æ¯ãç¶æããããã«äžå¯æ¬ ã§ãã
- æè»æ§ãšã«ã¹ã¿ãã€ãº: Zap ã®ç¹åŸŽã¯ãã®æè»æ§ã§ããéçºè ã¯ãZap ã®é«åºŠãªæ§æãªãã·ã§ã³ã䜿çšããŠããšã³ã³ãŒããŒãåºåã·ã³ã¯ãã«ã¹ã¿ãã€ãºããç¬èªã®ãã®ã³ã°æ§é ãæ§ç¯ããããšãã§ããŸãããã®ã«ã¹ã¿ãã€ãºã«ãããã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«å®å šã«é©åãããã®ã³ã° ã·ã¹ãã ãæ§ç¯ã§ããŸãã
- éçºããã³å®çšŒåãžã®æºå: Zap ãŠã£ãžã§ããã«ããããã¹ã段éã§ã¯éçºè ã«ãšã£ãŠäœ¿ãããããå®çšŒåã«åããŠæ¡åŒµå¯èœãªãã¬ãŒãå¯èœã«ãªããŸããåçãªã¬ãã«èª¿æŽãéçºã«é©ããã³ã³ãœãŒã«åºåãªã©ã®æ©èœã«ãããéçºè ã¯ããŒã«ãåãæ¿ããããšãªãã³ã³ããã¹ããåãæ¿ããããšãã§ããŸãã

ç»ååºå ž: ãã¿ãŒã¹ã¿ãã¯
Zap ã Go ã¢ããªã±ãŒã·ã§ã³ã«çµ±åããããšã¯ããã®ã³ã°å¹çãšéçºè ã®äººéå·¥åŠã«ãããŠäžæ©åé²ããããšãæå³ããŸããããšãã°ã AppMasterãªã©ã®ãã©ãããã©ãŒã ã¯éçšå¹çã®åäžã«åªããŠãããGo ããŒã¹ã®ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³å ã§ Zap Logger ãæŽ»çšããããšã§ãéçºè ã«ãšã£ãŠå¹æçã§ããããšã³ããŠãŒã¶ãŒã«ãšã£ãŠãããã©ãŒãã³ã¹ã®é«ããã®ã³ã° ã¡ã«ããºã ã«é¢ããã·ãŒã ã¬ã¹ãªãšã¯ã¹ããªãšã³ã¹ã確ä¿ã§ããŸãã
ãããã£ãŠãåçŽãªã¹ã¿ã³ãã¢ãã³ ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããå Žåã§ããè€éãªåæ£ã·ã¹ãã ã§äœæ¥ããŠããå Žåã§ãã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 ã䜿çšããåºæ¬çãªãã®ã³ã°: äžå¿ãšãªãæŠå¿µ
Zap Logger ã¯ãGo çšã®è¶ é«éã®æ§é åãã®ã³ã° ã©ã€ãã©ãªã§ããããã®ã·ã³ãã«ããšåŒ·åãªããã©ãŒãã³ã¹ã§éç«ã£ãŠããŸãã Zap ã䜿çšããŠåºæ¬çãªãã°èšé²ãéå§ããã«ã¯ãããã€ãã®äžæ žãšãªãæŠå¿µãçè§£ããããšãäžå¿ã«ãªããŸããã¢ããªã±ãŒã·ã§ã³ã®ãã®ã³ã°ã广çã«è¡ãããã«ããããã®åºæ¬èŠçŽ ã詳ããèŠãŠã¿ãŸãããã
- çµã¿èŸŒã¿ããªã»ãã: Zap ã«ã¯ã
NewProduction()ãNewDevelopment()ãªã©ã®äŸ¿å©ãªããªã»ãããä»å±ããŠããŸãããããã®ããªã»ããã¯ãããŸããŸãªç°å¢åãã«èšèšãããŠããŸããåè ã¯ãæ¬çªç°å¢ã«é©ããé«ããã©ãŒãã³ã¹ãšäœãªãŒããŒããããåªå ããããã« Zap ãæ§æããŸããäžæ¹ãåŸè ã¯ãéçºäžã«çæ³çãªãããåé·ã§äººã«åªãã圢åŒãæäŸããŸãã - Logger ãš SugaredLogger: Zap ã¯ã
LoggerãšSugaredLoggerãšãã 2 çš®é¡ã®ãã¬ãŒãæäŸããŸããLoggerå³å¯ã«åä»ããããæ§é åããããã°ãæäŸããŸãã 2 ã€ã®ãã¡ã®ã»ããé«éã§ãããæ§æã¯ããåé·ã§ããSugaredLoggerã¯å°ãé ãã§ãããããªãã¿ã® printf ã¹ã¿ã€ã«ã®ãã®ã³ã°é¢æ°ã«äŒŒããããéçºè ã«ãšã£ãŠäœ¿ãããã API ãåããŠããŸãã - ãã° ã¬ãã«: Zap ã¯ããããã°ãæ
å ±ãèŠåããšã©ãŒãDPanicããããã¯ãèŽåœçãªã©ãããŸããŸãªãã° ã¬ãã«ããµããŒãããŸããåã¬ãã«ã«ã¯å¯Ÿå¿ããã¡ãœãããããããã°ã«èšé²ããå
容ããã现ããå¶åŸ¡ã§ããŸããããšãã°ã
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 ã§äœ¿çšãããæšæºã¬ãã«ã¯æ¬¡ã®ãšããã§ãã
- ãããã°: ãã®ã¬ãã«ã¯ã詳现ãªãã©ãã«ã·ã¥ãŒãã£ã³ã°ãšéçºé¢é£ã®æŽå¯ã«äœ¿çšãããŸããéåžžããã®ã¬ãã«ã®ãã°ã«ã¯ãéçºæ®µéãŸãã¯è€éãªåé¡ã®ãããã°ã«åœ¹ç«ã€åºç¯ãªæ å ±ãå«ãŸããŠããŸãã
- Info : ã¢ããªã±ãŒã·ã§ã³ã®å®æçãªé²è¡ç¶æ³ã匷調ããæ å ±ã¡ãã»ãŒãžããããã¯å¿ ãããåé¡ã瀺ããŠããããã§ã¯ãããŸããããã¢ããªã±ãŒã·ã§ã³ ãããŒãšéèŠãªã€ãã³ãã远跡ããããã«äœ¿çšãããŸãã
- èŠå: èŠåã¯ãéèŠã§ã¯ãªããæ³šæãå¿ èŠãªäºæããªãã€ãã³ããŸãã¯åé¡ã瀺ããŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ£åžžãªæ©èœã忢ããªãæœåšçãªåé¡ã§ããå¯èœæ§ããããŸãã
- ãšã©ãŒ: ããã¯ãã¢ããªã±ãŒã·ã§ã³ã«é倧ãªåé¡ãããå Žåã«äœ¿çšãããŸããéåžžããšã©ãŒã«ããäžéšã®æ©èœãæ£åžžã«åäœããªããªããããçŽã¡ã«å¯ŸåŠããå¿ èŠããããŸãã
- 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 ã䜿çšããããã®ãã¹ã ãã©ã¯ãã£ã¹
匷åãªãã° ã·ã¹ãã ã¯ãéçšã°ã¬ãŒãã®ãœãããŠã§ã¢ãä¿å®ããã³ç£èŠããããã®åºç€ã§ãã Zap Logger for Go ã¢ããªã±ãŒã·ã§ã³ãéçšç°å¢ã§å©çšããå Žåã¯ããã¹ã ãã©ã¯ãã£ã¹ã«åŸã£ãŠããã®ã³ã°ã广çãå¹ççãå®å šã§ããããšã確èªããããšãéèŠã§ããããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã®é«ãéçšç°å¢ãç¶æããªãããZap Logger ã®å¯èœæ§ãæå€§åããæ¹æ³ãæ€èšããŸãã
éåæãã°ã®æ§æ
å®çšŒåç°å¢ã§ã®ãã°ã€ã³ã®äž»ãªèª²é¡ã® 1 ã€ã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ã§ããåæãã°æžã蟌ã¿ã«ããã¢ããªã±ãŒã·ã§ã³ ããã»ã¹ããããã¯ãããé床ãäœäžããå¯èœæ§ããããŸããããã軜æžããã«ã¯ãZap ã®éåæãã°æ©èœãæ§æããããšããå§ãããŸãããã¬ãŒã¯ãããã¡ãªã³ã°ããã WriteSyncer ã䜿çšããŠã»ããã¢ããã§ããŸããããã«ããããã°ã®æžã蟌ã¿ãããã¯ã°ã©ãŠã³ãã§å®å
ã«ãã©ãã·ã¥ãããŠããéãã¢ããªã±ãŒã·ã§ã³ã¯åŠçãç¶è¡ã§ããŸãã
ã¢ãããã¯ã¬ãã«ã¹ã€ããã³ã°ã䜿çšãã
ç°å¢ãç°ãªãã°ããã®ã³ã°ã«å¿ èŠãªè©³çްã¬ãã«ãç°ãªããŸããããšãã°ãéçºã§ã¯è©³çްãªããããã°ããã°ãå¿ èŠã«ãªãå ŽåããããŸãããéçšç°å¢ã§ã¯ããšã©ãŒãã¬ãã«ã®ãã°ãé©åãªå ŽåããããŸãã Zap ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ãåèµ·åããããæ°ãããã¬ãŒãäœæãããããã«ãå®è¡æã«ã¬ãã«ãã¢ãããã¯ã«åãæ¿ããããšãã§ããŸããããã«ãããçŸåšã®éçšç°å¢ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããŒãºã«åºã¥ããåçãªãã° ã¬ãã«ç®¡çã容æã«ãªããŸãã
ã³ã³ããã¹ãã䜿çšããæ§é åãã®ã³ã°
æ§é åããããã°ã¯äººéã«ãšã£ãŠèªã¿ãããã ãã§ãªããæ©æ¢°ã«ãšã£ãŠãè§£æãããããªããŸãã Zap ã¯æ§é åããããã®ã³ã°ã«åªããŠãããè±å¯ãªã³ã³ããã¹ããæäŸã§ããŸããæ§é åãã£ãŒã«ãã®ãããã°ããã¬ãŒã¹ã«åœ¹ç«ã€ãé¢é£ããã³ã³ããã¹ãæ å ±ããã°ã«è¿œå ããå¿ èŠããããŸããããã«ã¯ããªã¯ãšã¹ã IDããŠãŒã¶ãŒèå¥åãããã«ã¯ãšã©ãŒã®ã¹ã¿ã㯠ãã¬ãŒã¹ãå«ãŸããå ŽåããããŸãã
æ©å¯æ å ±ã®åãæ±ãã«ã¯æ éã«
ãã°ã«ã¯æ©å¯æ
å ±ã誀ã£ãŠå«ãŸããå¯èœæ§ããããŸãããŠãŒã¶ãŒã®ãã©ã€ããŒã ããŒã¿ãAPI ããŒããã®ä»ã®ç§å¯ãæŒæŽ©ããªãããã«ãã°ããµãã¿ã€ãºããããšãéèŠã§ãã Zap ã§ã¯ã zap.String ã zap.Any ãªã©ã®ãã£ãŒã«ã ã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšã§ããŸãããããã®ãã£ãŒã«ã ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãå¿
èŠã«å¿ããŠæ©å¯æ
å ±ãç·šéãŸãã¯æå·åãããããã«ã©ãããŸãã¯å€æŽã§ããŸãã
äžå€ã®ãã¬ãŒæ§æ
å®çšŒåç°å¢ã®ãã¬ãŒæ§æã¯ããã®ã³ã°ãäžæããå¯èœæ§ã®ããå®è¡æã®æ§æãã¹ãé¿ããããã«äžå€ã§ããå¿ èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ã®éå§æã«ãã¬ãŒã 1 åã»ããã¢ãããããã®åŸã¯æ§æã倿Žããªãã§ãã ããããã®ã³ã°åäœã®å€æŽã¯ãéçšç°å¢ã§å³åº§ã«é©çšããã®ã§ã¯ãªããã³ãŒãã®å€æŽãšãããã€ã¡ã³ããéããŠä¿é²ããå¿ èŠããããŸãã
ãã°ã®éèšãšåæ
éçšç°å¢ã§ã¯ãåæãšç£èŠã®ããã«ãã°ãéäžãã° ã·ã¹ãã ã«éçŽããå¿ èŠããããŸããé©åã«çµ±åããããã®ã³ã°ã§ã¯ãJSON 圢åŒã§ãã°ãåºåãã Zap ã®æ©èœã掻çšã§ããŸãããã°ã¯ãELK ã¹ã¿ã㯠(ElasticsearchãLogstashãKibana) ã Splunk ãªã©ã®ãã°éçŽããŒã«ã«ãã£ãŠåéããã³è§£æãããé«åºŠãªã¯ãšãªãã¢ã©ãŒããç£èŠãå¯èœã«ãªããŸãã
ãªãœãŒã¹ã®å²ãåœãŠãšç®¡ç
Zap ã¯ããã©ãŒãã³ã¹ãé«ãäžæ¹ã§ãéçšç°å¢ã§ãã° ããªã¥ãŒã ãåŠçããã®ã«ååãªã·ã¹ãã ãªãœãŒã¹ãæäŸããå¿ èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã® CPU ãšã¡ã¢ãªã®äœ¿çšçãç£èŠããŠãã¢ããªã±ãŒã·ã§ã³ãšãã®ãã°èšé²ã¢ã¯ãã£ããã£ã®äž¡æ¹ã«ååãªãªãœãŒã¹ãå²ãåœãŠãŸãããŸãããã¡ã€ã«ã®ããŒããŒã·ã§ã³ãšã¢ãŒã«ã€ãã®ããªã·ãŒãå®è£ ããŠããã£ã¹ã¯é åã®æ¶è²»ã管çããŸãã
ç¶ç¶çãªç£èŠãšã¢ã©ãŒã
ãã°ã¯ãã€ãã³ãåŸã®åæã ãã§ãªãããªã¢ã«ã¿ã€ã ã®ç£èŠãã¢ã©ãŒãã«ã圹ç«ã¡ãŸããç¹å®ã®ãã° ãã¿ãŒã³ãŸãã¯ãšã©ãŒçã«åºã¥ããŠã¢ã©ãŒããããªã¬ãŒããããã«ãã°éçŽã·ã¹ãã ãæ§æãããšãåé¡ããŠãŒã¶ãŒã«é倧ãªåœ±é¿ãäžããåã«è¿ éã«å¯Ÿå¿ã§ããŸãã
äŒæ¡æ £è¡ã®å®æçãªã¬ãã¥ãŒ
ãã¹ã ãã©ã¯ãã£ã¹ã¯éçãªãã®ã§ã¯ãªããããŒã«ãã¢ããªã±ãŒã·ã§ã³ãšãšãã«é²åããŸãã宿çã«ãã°ã®èšå®ãšå®è·µãèŠçŽããŠãZap ã³ãã¥ããã£ããã®ææ°ã®æšå¥šäºé ããã°ã®ãã¹ã ãã©ã¯ãã£ã¹ãç¹ã«ãã©ã€ãã·ãŒã«é¢ããèŠå¶ã®å€æŽã«åãããŠãã ããã
ãããã®ãã¹ã ãã©ã¯ãã£ã¹ã«åŸãããšã§ãZap Logger ã®èœåãæå€§éã«æŽ»çšããå®çšŒåç°å¢ã§ Go ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšãã©ãã«ã®ãªãç¶æ ãç¶æã§ããŸãããããã®æŠå¿µãAppMasterã®ãããªãã©ãããã©ãŒã ãšäºææ§ãããããšã¯æ³šç®ã«å€ããŸããWeb ã¢ããªãã¢ãã€ã« ã¢ããªçšã«çæããã Go ããã¯ãšã³ãã¯ãZap ãæäŸããæ§é åãããå¶åŸ¡ãããæŽå¯åã«å¯ãã ãã®ã³ã°ã®æ©æµãåããããšãã§ããŸãããã®ã³ã°ã®å®è·µãç¶ç¶çã«æ¹åããããšã§ãã·ã¹ãã ã®ä¿å®æ§ãšæ¡åŒµæ§ãåäžããŸãã
Zap Logger ã«é¢ããäžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ãã¹ãŠã®éçºè ã¯ãä¿¡é Œæ§ã®é«ããã° ã·ã¹ãã ã®éèŠæ§ãèªèããŠããŸããZap Logger ã®ãããªåŒ·åãªãœãªã¥ãŒã·ã§ã³ã Go ã¢ããªã±ãŒã·ã§ã³ã«çµ±åãããšãããã€ãã®äžè¬çãªåé¡ãçºçããå¯èœæ§ããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãZap Logger ã§çºçããå¯èœæ§ã®ããäžè¬çãªåé¡ãšããããã解決ããŠæç¢ºã§å¹ççãªãã°ãç¶æããæ¹æ³ã«ã€ããŠèª¬æããŸãã
åæåãšã©ãŒã®èšºæ
ããããåé¡ã® 1 ã€ã¯ããã¬ãŒãé©åã«åæåã§ããªãããšã§ããããã¯ãæ§æèšå®ãééã£ãŠããããå¿ èŠãªäŸåé¢ä¿ãå«ãŸããŠããªãããšãåå ã§çºçããå¯èœæ§ããããŸããåæåã®åé¡ã解決ããã«ã¯:
- æ§ææ§é äœã䜿çšããŠããå Žåã¯ããã¹ãŠã®æ§æãæå¹ãª JSON ãŸãã¯æ§é åãªããžã§ã¯ãã§ããããšã確èªããŠãã ããã
- Zap ã®ææ°ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããŠããããšãããã³ä»ã®ã©ã€ãã©ãªãšã®ç«¶åããªãããšã確èªããŠãã ããã
- æ£ããã€ã³ããŒã ãã¹ã䜿çšã㊠Go ãã¡ã€ã«ã®å é ã« Zap ãæ£ããã€ã³ããŒãããŸãã
ãã°ã¬ãã«ã®èšå®ãã¹ã®åŠç
Zap ã䜿çšãããšããã° ã¬ãã«ãã°ããŒãã«ã«èšå®ããããšããåã ã®ãã¬ãŒã«å¯ŸããŠèšå®ããããšãã§ããŸãããã° ã¬ãã«ã®æ§æã誀ããšãéèŠãªãã° ãšã³ããªã倱ãããå¯èœæ§ããããŸãããã° ã¬ãã«ã®èšå®ãã¹ãçãããå Žåã¯ãæ¬¡ã®æé ãå®è¡ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ã°ããŒãã« ãã° ã¬ãã«èšå®ãå確èªããŠãã ããã
- ç¹å®ã®ãã° ã¬ãã«ãèšå®ãããŠãããã¬ãŒ ã€ã³ã¹ã¿ã³ã¹ã®æ§æã確èªããŸãã
- æå³ããªãéãããã¬ãŒ ã€ã³ã¹ã¿ã³ã¹ã誀ã£ãŠã°ããŒãã«èšå®ããªãŒããŒã©ã€ãããªãããã«ããŠãã ããã
é©åãªãã° ã¡ãã»ãŒãžæ§é ã®ç¢ºèª
Zap Logger ã¯æ§é åããããã°ã«åªããŠããŸãããæ§é åãæ£ãããªããšãè§£æãå°é£ãªãã°ãäžå®å šãªæ å ±ãå«ãŸãããã°ãçæãããå¯èœæ§ããããŸããæ§é åãã°ãé©åã«è¡šç€ºãããããã«ããã«ã¯ãæ¬¡ã®æé ãå®è¡ããŸãã
- æ§é åããŒã¿ã«ã¯ã
zap.String()ãzap.Int()ãªã©ã®æäŸããã Zap ãã£ãŒã«ã ã³ã³ã¹ãã©ã¯ã¿ãŒãäžè²«ããŠäœ¿çšããŸãã - ãã°ã«èšé²ãããã«ã¹ã¿ã ãªããžã§ã¯ããé©åã«ã·ãªã¢ã«åå¯èœã§ããããšã確èªããŠãã ããã
- ãã°ã®è§£æãšåæãè€éã«ãªãå¯èœæ§ãããããããã° ã¡ãã»ãŒãžã®æ§é ãé »ç¹ã«å€æŽããªãã§ãã ããã
éåæãã°ã®åé¡ã®ãããã°
ããã©ãŒãã³ã¹ãåäžãããããã«éåæãã°ãæ¡çšãããšããããã¡ ãªãŒããŒãããŒãã¢ããªã±ãŒã·ã§ã³ã®æ©æçµäºãåå ã§ãäžéšã®ã¡ãã»ãŒãžã衚瀺ãããªãå ŽåããããŸããéåæã¢ãŒãã§ãã° ã¡ãã»ãŒãžã倱ãããå Žå:
zap.Buffer()èšå®ãã¢ããªã±ãŒã·ã§ã³ã®ãã°éã«åºã¥ããŠé©åãªãµã€ãºã«ãªã£ãŠããããšã確èªããŠãã ããã- é©åãªã·ã£ããããŠã³ ããã¯ãå®è£ ããŠãã¢ããªã±ãŒã·ã§ã³ãçµäºããåã«ãã° ãããã¡ãŒããã©ãã·ã¥ããŸãã
- ã¡ãã»ãŒãžæå€±ãçºçããå Žåã¯ãéçºæ®µéã§ããä¿¡é Œæ§ã®é«ããã°ãåŸãããã«åæã¢ãŒãã®äœ¿çšãæ€èšããŠãã ããã
ãã°ããŒããŒã·ã§ã³ãšãã¡ã€ã«ç®¡ç
ãã° ãã¡ã€ã«ã®ç®¡çã¯éèŠã§ããããã° ããŒããŒã·ã§ã³ãäžé©åã«æ§æãããŠãããšããã° ãã¡ã€ã«ã®ãµã€ãºã倧ãããªããããããã¡ãã»ãŒãžã倱ããããããå¯èœæ§ããããŸãããã° ãã¡ã€ã«ç®¡çã§åé¡ãçºçããå Žå:
- Zap ã®çµã¿èŸŒã¿æ©èœãããŒãºãæºãããªãå Žåã¯ããµãŒãããŒãã£ã®ãã° ããŒããŒã·ã§ã³ ããã±ãŒãžãçµ±åããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ãã®ã³ã°é »åºŠãã¹ãã¬ãŒãžå®¹éã«å¿ããŠããã¡ã€ã« ãµã€ãºãããŒããŒã·ã§ã³æ°ãªã©ã®ãã° ããŒããŒã·ã§ã³ ãã©ã¡ãŒã¿ãæ§æããŸãã
- ãã° ãã¡ã€ã« ãã£ã¬ã¯ããªã宿çã«ç£èŠããŠãèªåããŒããŒã·ã§ã³ãšã¯ãªãŒã³ã¢ãã ã¢ã¯ã·ã§ã³ãèšå®ã©ããã«å®è¡ãããŠããããšã確èªããŸãã
Zap Logger ã«é¢ããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«ã¯ãéåžžãæ§æã詳ãã調æ»ãããã¬ãŒããŠãŒã¹ã±ãŒã¹ã«é©ãããªãã·ã§ã³ã§èšå®ãããŠããããšã確èªããããšãå«ãŸããŸãã AppMasterãªã©ã®ãã©ãããã©ãŒã ã§äœæãããããã¯ãšã³ããšçµ±åããå Žåã¯ããã°èšå®ããã®ãããªãã©ãããã©ãŒã ã®åºæã®ç°å¢æ§æãèæ ®ããŠããããšã確èªããŠãã ããã
ãããªããªãœãŒã¹ãšã³ãã¥ããã£ãµããŒã
Zap Logger ããã¹ã¿ãŒãããŸã§ã®éã®ãã¯ãåæèšå®ãšåºæ¬çãªäœ¿çšæ³ã ãã§ã¯çµãããŸããã Go ã³ãã¥ããã£ã¯æŽ»çºã§ãªãœãŒã¹ãè±å¯ãªã®ã§ãç¶ç¶çãªåŠç¿ãšæ¹åã容æã«è¡ããŸãã以äžã«ãã³ãã¥ãã㣠ãµããŒããèŠã€ããããšãã§ãã貎éãªãªãœãŒã¹ãšãã©ãããã©ãŒã ãããã€ã瀺ããŸãã
Zap ãã¬ãŒã®å ¬åŒããã¥ã¡ã³ã
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 ã®äœéšã«é¢ãã詳现ãªèšäºãå ±æããå®çšçãªãã³ããå®éã®äœ¿çšäŸãæäŸããŠããŸããç°¡å㪠Web æ€çŽ¢ã§ãã¹ããããã€ã¹ãããã®ã¬ã€ããæŽå¯ã倧éã«åŸãããŸãã
ãããªãšãŠã§ãããŒ
èŠèŠçãªåŠç¿è ã¯ããã㪠ãã¥ãŒããªã¢ã«ããŠã§ãããŒããæ©æµãåããããšãã§ããŸãã 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 ã®å¹æçãªäœ¿ç𿹿³ãåŠã¶ããšãã§ããããã¥ã¡ã³ãããã¥ãŒããªã¢ã«ããã©ãŒã©ã ãªã©ã®ããŸããŸãªãªãœãŒã¹ãæäŸããŸãã


