د نوي په Go 1.21 کې پروګرام د جوړولو لګولو ته د معياري کتابتون ته راځي. جوړولو لګونه د کلیدي ارزښتونه کاروي نو دوی کولی شي په چټکۍ او اعتماد سره پټول شي، فلټر شي، چمتو شي، او تحلیل شي. د سرورونو لپاره، لګولو د پروګرامانو لپاره د سیستم د تفصيلات چلند په نظر کې یو مهم لاره ده، او ډیری وختونه لومړی ځای چې دوی دا ډبګ کړي. لګونه له دې امله د حجم لري، او د چمتو کولو او دوی په چټکۍ سره فلټر کولو وړتیا مهم دی. log/slog د معياري کتابتون لري چې د لوګونې بسته، ، له دې امله چې د Go لومړنۍ وړاندیز څخه د 10 کلونو څخه زيات مخکې. په وخت کې، موږ پوه شو چې جوړ شوی لګولو د Go پروګرامانو لپاره مهم دی. دا په کال کې زموږ په سروې کې په دوامداره توګه لوړ پوښل شوی دی، او په Go اکوسیسټم کې ډیری پکیجونه دا وړاندې کوي. د دې شمېر ډیری مشهور دي: د Go لپاره د لومړي جوړ شوی لګولو پکیجونو څخه یو. ، په نور 100،000 نورو بستهونو کې کارول کیږي. log لګولو د ډیری جوړ شوی پروګرامونه څخه غوره کولو سره، لوی پروګرامونه اغیزمنه به د دوی د بستېونو له لارې ډیری پروګرامونه شامل کړي. د اصلي پروګرام ممکن د دې پروګرامونو په هر ډول جوړولو ته اړتیا لري چې د پروګرام د پایلو یوځای وي: دا ټول په ورته ځای کې، په ورته فارم کې چمتو کیږي. د معياري کتابتون کې جوړ شوی پروګرام شامل کولو له لارې، موږ کولی شو یو مشترکه فریم ورک برابر کړي چې د نورو جوړ شوی پروګرامونه کولی شي شریک کړي. د سفر نندارې نندارې دلته د ساده ترین پروګرام چې کاروي : slog package main import "log/slog" func main() { slog.Info("hello, world") } د دې لیکلو څخه، دا چاپوي: 2023/08/04 16:09:19 INFO hello, world د د فورمه د معلوماتو جوا په سطحه کې د پيغام چاپوي د معياري جواټر په کارولو سره، چې په دې صورت کې د معياري جواټر څخه دی. کڅوړه - د هغه لوګر چې تاسو کولی شئ کله چې تاسو کولی شئ دا توضیح کوي چې څرنګه چې د محصول په څیر ورته دی: یوازې د "INFO" نوی دی. او د اصل کڅوړه په ګډه کار کوي ترڅو په اسانۍ سره پیل شي. Info log log.Printf slog log نور ، د نورو درې کچه لپاره فعالیتونه شتون لري- د او - او همدارنګه نور عمومي دنده چې د سطحې په توګه د بحث په توګه واخلي. په ، کچه یوازې کلکه دي، نو تاسو به د چار نامتو کچه محدود نه وي. د مثال په توګه، د 0 او د 4 دی، نو که ستاسو د لګولو سیستم د دوی تر منځ یو کچه لري، تاسو کولی شئ د 2 لپاره کار واخلئ. Info Debug Warn Error Log slog Info Warn په پرتله د د بسته، موږ کولی شو په اسانۍ سره د پيغام وروسته له لارې زموږ د محصول د کلیدي ارزښت جوړه کړي: log slog.Info("hello, world", "user", os.Getenv("USER")) اوس د محصول د دې څنګه ښکاري: 2023/08/04 16:27:19 INFO hello, world user=jba لکه څنګه چې موږ په یاد ولرئ، د عالي کچه دنده د معياري ریکارډر کاروي. موږ کولی شو دا ریکارډر په ځانګړې توګه ترلاسه کړي، او د دې روشونو ته نوم: slog logger := slog.Default() logger.Info("hello, world", "user", os.Getenv("USER")) د هر لوړې کچه دنده په توګه د A . د صادراتو ورته دی چې مخکې. slog.Logger په پیل کې، slog د محصول د default له لارې راشي ، د محصول د محصول چې موږ په اوسط کې وګورئ. موږ کولی شو د محصول د بدلون له لارې بدلون د لوکس کارول. د دوو په جوړولو سره راځي. A په فورمه کې ټول لوګ معلومات اخلي . دا پروګرام د یو نوی لوګر کاروي او په ورته ډول د د نمونوي: log.Logger د کارولو slog TextHandler key=value TextHandler Info logger := slog.New(slog.NewTextHandler(os.Stdout, nil)) logger.Info("hello, world", "user", os.Getenv("USER")) اوس د محصول د دې څنګه ښکاري: time=2023-08-04T16:56:03.786-04:00 level=INFO msg="hello, world" user=jba هر څه په یو کلید-د ارزښت جفت بدل شوی دی، د جوړښت د ساتنې لپاره د اړتیاوو په توګه د ټریډونو سره. د JSON صادرولو لپاره، د داخلې نصب کړئ په بل کې: JSONHandler logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) logger.Info("hello, world", "user", os.Getenv("USER")) اوس زموږ د صادراتو د JSON اجزا sequence دی، په هر لوګنگ کال کې یو: {"time":"2023-08-04T16:58:02.939245411-04:00","level":"INFO","msg":"hello, world","user":"jba"} تاسو د داخل شوي handlers لخوا محدود نه وي. هرڅوک کولی شي د handlers په کارولو سره د handlers چاپ کړئ. د کنټرولر کولی شي په يو ځانګړي فورمټ کې د محصول تولید کړي، یا دا کولی شي د نورو کنټرولر سره د فعالیت اضافه کړي. په د دستاویزات ښيي چې څنګه د پوښونو کنټرولر جوړ کړئ چې د کمېسيون کچه بدلون کوي چې د ژور پیژندنې به ښیي. slog.Handler مثالونه slog د ځانګړتیاوو لپاره چې موږ تر اوسه کار واخلئ، د متحول کلید-د ارزښت سټاک مناسب دی، مګر د اغیزمنو لګولو بیانونو لپاره دا ممکن د کارولو لپاره ډیر اغیزمن وي. ډول او د تماس Method. دوی په ګډه کار کوي ترڅو د حافظه توزیعونه کم کړي. د جوړولو لپاره فعالیتونه شتون لري s د string، شمیره، او نورو عام ډولونو څخه. Attr LogAttrs Attr دا د تماس د اوبو په څیر ورته محصول تولید کوي، مګر دا په چټکۍ سره کار کوي: LogAttrs slog.LogAttrs(context.Background(), slog.LevelInfo, "hello, world", slog.String("user", os.Getenv("USER"))) د دې لپاره ډیر دي : slog لکه څنګه چې د LogAttrs تماس ښودل کیږي، تاسو کولی شئ د kontekst.Context په ځینو روزنې دندهونو ته انتقال کړئ نو د پروپیلر کولی شي د پیژندنې معلوماتو لکه د پیژندنې IDونو په څیر اخلي. (د kontekst حذف کول د روزنې انډول مخنیوی نه کوي چې لیکل شي.) تاسو کولی شئ د Logger.With ته د Logger ځانګړتیاوې اضافه کړئ چې په ټولو خپل محصول کې ښودل کیږي، په اغیزمنه توګه د ډیرو روزنې بیاناتو عمومي برخو په پام کې ونیسئ. دا نه یوازې مناسب نه ده، مګر دا هم کولی شي د کړنو سره مرسته وکړي، لکه څنګه چې لاندې بحث شوي. دا کولی شي ستاسو د ژور محصول ته نور جوړښت اضافه کړي، او کولی شي د کلیدونو چې په بل ډول ورته وي، د بیلابیلو کولو کې مرسته وکړي. تاسو کولی شئ کنټرول وکړئ چې څنګه د ارزښت په لوګونو کې ښودل کیږي د LogValue روش سره د هغه ډول وړاندې کولو له لارې. دا کولی شي د Struct ساحهونو د ګروپونو په توګه د لګولو لپاره یا د حساس ډاټا ترمیم کولو لپاره د نورو لپاره کارول شي. د ټولو په اړه پوه شي ترټولو غوره ځای دا د . slog د ډاټاګرام فعالیتونه موږ غواړم چټک شي. د لوی کچه د کړنو ګټه لپاره، موږ د انټرنېټ لپاره د optimization فرصتونه برابر کړي. د د پروګرام د هر پروګرام واقعیت په پیل کې د پروګرام په کارولو سره د امکان د ناڅاپي پروګرام واقعیتونو په چټکۍ سره ونیسئ. او د methods اجازه ورکوي چې د handler format attributes له خوا اضافه شي په هر لګولو تماس کې نه. دا مخکښ شکل کولو کولی شي د لوی ځانګړتیاوو، لکه د ، د A سره اضافه شوي دي او وروسته په ډیری لګولو کالونو کې کارول کیږي. slog د Handler Enabled WithAttrs WithGroup Logger.With http.Request Logger زموږ د کړنو د ګټور کولو کار لپاره، موږ د موجودې د Open-Source پروژو کې د لګولو عادي نمونې په څیړنه کې ونیسئ. موږ پدې پایله کې چې د لګولو لارو لپاره د 95٪ څخه زیات غوښتنې د پنجې یا لږ ځانګړتیاوو ته ورسیږي. موږ هم د ځانګړتیاوو ډولونو رامینځته کوو، په پایله کې چې د عادي ځانګړتیاوو ډیری دي. موږ وروسته د بیلابیلو معیارونو لیکلي چې د عمومي صورتونو راټول کړي، او دوی په توګه د لارښوونې په توګه کاروئ ترڅو وګورئ چې د وخت کولی شي. ترټولو لوی ګټه د یادښت توزیع په اړه د احتیاط په اړه راځي. د ډیزاین پروسه د پیکیج د Go 1 په 2012 کال کې خپره شوې وروسته د معياري کتابتون کې تر ټولو لوی اضافیونه ده. موږ غواړم چې زموږ وخت د ډیزاین لپاره وساتي، او موږ پوه شو چې د ټولنې پیژندنه مهم وي. slog د 2022 په اپریل کې، موږ د ډاټا ډاټا ډاټا لرو چې په Go ټولنه کې د جوړ شوی ریکارډ کولو مهمیت ډاټا کړي. د Go ټیم د دې په معياري کتابتون کې اضافه کولو په څیر څیړنه وکړي. موږ په پیل کې څرنګه وکړه چې څنګه د موجودې جوړ شوی ریکارډ کولو بسته ډیزاین شوي. موږ هم د Go ماډل پروکس کې ذخیره شوي د Open-Source Go کوډ د لوی مجموعې څخه ګټه واخلئ ترڅو پوه شي چې څنګه د دغو بستهونو په حقیقت کې کارول شوي. زموږ لومړي ډیزاین د دې څیړنې او د Go ساده روح له لارې معلوم شوي. موږ غواړم چې یو API چې په پاڼه کې رڼا او آسانه وي، د فعالیت د ضایع کولو پرته. دا هیڅکله دا هدف نه وه چې د موجودو تیسری طرفو لوګنگ پکیجونو بدلون. دوی ټول په هغه څه کې ښه دي چې دوی کار کوي، او د موجودي کوډ بدلون چې ښه کار کوي نږدې نږدې د پرمختللي وخت په ښه توګه کار کوي. موږ د API په یو frontend، ، کوم چې د backend انټرنیټ په نامه ده ، . په دې توګه، د موجوده لوګونې بستهونه کولی شي د یو عام بکسین سره خبرې وکړي، نو د بستهونو چې دوی کاروي کولی شي د دوی سره اړیکه ونیسئ پرته له دې چې دا د نوي لیکلو ته اړتيا لري. Handlers د ډیری عام لوګونې بستهونو لپاره لیکل شوي دي یا په پایله کې دي، په شمول د او . Logger Handler د ZAP لګولو د HCLOG موږ زموږ د لومړي ډیزاین په Go ټیم کې او نورو ډیزاینرونو کې شریک شوي چې پراخه لرونکي تجربه لري. موږ د دوی پیژندنې پر بنسټ بدلونونه ترسره کړ، او د 2022 کال په اګست کې موږ احساس کړ چې موږ د کار وړ ډیزاین لرو. په 29 اګست کې موږ زموږ عمومي او پیل a د ټولنیز هغه څه چې موږ باید بڼه ونیسئ. د ځواب د خوښۍ او په عمده توګه مثبت دی. د ډیزاینر او د نورو جوړ شویو لوګنگ پکونو کاروونکو کاروونکو له امله، موږ ډیری بدلونونه ترسره کړ او ځینې ځانګړتیاوې اضافه کړ، لکه ګروپونه او موږ د کارپوه کولو څخه د لوګ کچه څخه دوه ځله په کلکه کې بدل شو. تجربي غوښتنلیک د GitHub بحث LogValuer د دوو میاشتو وروسته او د 300 نظرونو په اړه، موږ احساس کړ چې موږ د واقعي د سپارلو . د پروژې موضوع د 800 څخه زيات تبصرې ترلاسه کړ او د API او د پیژندنې په اړه ډیری پرمختګونه رامینځته کړ. دلته د API بدلونونو دوه مثالونه شتون لري. : پروژې ډیزاین DOC context.Context په اصل کې د API د لوګرزونو په کنټرول کې اضافه کولو ملاتړ کوي. ډیری یې احساس کوي چې دا یو مناسب لاره ده چې د لوګرزونو په آسانه توګه د کوډ کچه په لټه کې نلري. مګر نورو احساس کوي چې دا په غیرقانوني بستې کې د مخدره کولو کې دی، د کوډ درکولو سخت کړي. په پایله کې، موږ د ځانګړتیاوو له امله ډیر بحث شوي دي. موږ په پیل کې د معياري نمونوي ته د معياري په توګه د لومړي بحث په توګه مقاومت کړ، ځکه چې موږ نه غواړم چې هر لګولو تماس د معياري ته اړتيا لري، خو په پایله کې د لګولو طریقو دوه ټولګه جوړ کړ، یو سره د معياري او یو پرته. یو بدلون چې موږ د ځانګړتیاوو د بیان لپاره د کلید او ارزښت بدلون سټاکس په اړه فکر نه کړ: slog.Info("message", "k1", v1, "k2", v2) ډیری هڅه کوي چې دا یو بد افکار دی. دوی یې په سخته توګه ښکاري او د یو کلید یا ارزښت له الرې په غلطۍ کې راټول کیږي. دوی د جوړښت بیان کولو لپاره د واضح ځانګړتیاوو ترټولو ترټولو ګټه لري: slog.Info("message", slog.Int("k1", v1), slog.String("k2", v2)) مګر موږ احساس وکړئ چې د رڼا سټاکس مهم دی چې د Go کارولو آسانه او خوشحاله کړي، په ځانګړي ډول د نوي Go پروګرامونو لپاره. موږ هم پوه شو چې د ډیری Go لګولو بستهونو، لکه د او (د خپل ) په بریالیتوب سره د بدلون کلیدونه او ارزښتونه کارول. موږ د د عادي غلطاتو په لټه کې کړي، مګر د ډیزاین بدلون نه کړې. logr go-kit/log zap SugaredLogger وګورئ د 15 مارچ په 2023 کې، د پروژې تصویب شو، مګر ځینې کوچني غیر حل شوي ستونزو شتون لري. په راتلونکي اونۍ کې، د 10 اضافي بدلونونه پیشنهاد شوي او حل شوي دي. د جولای په پیل کې، د د پروګرام بشپړ شوی، سره د د مخابراتو د تفتیش او د مخابراتو د تبادلې کلیدونو او ارزښتونو د مناسب کارولو لپاره د ویټیټ چیک لپاره بسته. log/slog testing/slogtest او د 8 اګست په اړه Go 1.21 خپور شو، او موږ امیدو چې تاسو دا ګټور، او د کارولو په توګه د خوښۍ په توګه جوړ کړي. slog او د ټولو سپارښتنه چې په بحث او د پروژې پروسه کې ګډون وکړ. ستاسو د سپارښتنې ښه ناڅاپي slog سرچینې د د بسته د دې لپاره څنګه کاروي او څو مثالونه وړاندې کوي. د سند log/slog د د Go ټولنې لخوا د اضافي سرچینې لري، په شمول د مختلفو کارپوهانو. د wiki پاڼه که تاسو غواړئ د کارپوه کولو په اړه ونیسئ، د . د کارپوهانو لپاره د لارښوونې د Jonathan Amsterdam انځور: Jeff Smith په Unsplash کې جف سميث د نندارتون دا مقاله د CC BY 4.0 DEED لائسنس لاندې په The Go Blog کې شتون لري. د Go Blog د Go Blog