منصوبے کے بارے میں

Logrus Go کے لیے ایک منظم لاگر ہے، جو معیاری لائبریری لاگر کے ساتھ API مطابقت رکھنے کے لیے ڈیزائن کیا گیا ہے۔ یہ مینٹیننس موڈ میں ہے: پروجیکٹ سیکیورٹی، بگ فکسز اور کارکردگی میں بہتری پر توجہ مرکوز کرتا ہے، جبکہ نئی خصوصیات انٹرآپریبلٹی کام تک محدود ہیں جیسے Go کا log/slog۔ README نوٹ کرتا ہے کہ منظم لاگنگ اب Go میں Zerolog، Zap اور Apex جیسے متبادلات کے ذریعے وسیع پیمانے پر دستیاب ہے۔ بنیادی صلاحیتیں: - سطحی لاگنگ سات سطحوں کے ساتھ: Trace، Debug، Info، Warning، Error، Fatal اور Panic۔ ایک لاگر کو منتخب شدہ شدت یا اس سے اوپر کی صرف اندراجات خارج کرنے کے لیے ترتیب دیا جا سکتا ہے۔ - WithField اور WithFields کے ذریعے منظم فیلڈز، لمبے فارمیٹ شدہ پیغامات کے بجائے قابل دریافت کلید-قدر لاگنگ کی حوصلہ افزائی کرتے ہیں۔ اندراجات خود بخود وقت، پیغام اور سطح شامل کرتی ہیں۔ - ڈیفالٹ فیلڈز: WithFields ایک logrus.Entry واپس کرتا ہے جسے متعدد لاگ بیانات میں عام فیلڈز جیسے request_id یا user_ip منسلک کرنے کے لیے دوبارہ استعمال کیا جا سکتا ہے۔ - فارمیٹرز: بلٹ ان TextFormatter (جب آؤٹ پٹ TTY ہو تو رنگ کوڈڈ، بصورت دیگر logfmt مطابق سادہ متن) اور JSONFormatter مشین پارسنگ کے لیے جیسے Logstash یا Splunk۔ اختیارات میں ForceColors، DisableColors، DisableLevelTruncation، PadLevelText اور FullTimestamp شامل ہیں۔ کسٹم فارمیٹرز Formatter انٹرفیس کو نافذ کرتے ہیں۔ - ہکس: لاگنگ سطحوں پر رویہ منسلک کریں، مثال کے طور پر خرابیوں کو استثنا ٹریکرز کو بھیجنا، StatsD کو آگے بھیجنا، یا syslog میں لکھنا۔ بلٹ ان ہکس موجود ہیں اور تھرڈ پارٹی ہکس پروجیکٹ ویکی میں درج ہیں۔ - کالر رپورٹنگ: SetReportCaller(true) کالنگ طریقہ کو فیلڈ کے طور پر شامل کرتا ہے، README میں قابل پیمائش اوور ہیڈ نوٹ کیا گیا ہے۔ - io.Writer انٹیگریشن: logger.Writer() لاگر کو io.Writer کے طور پر ظاہر کرتا ہے، جس سے معیاری لائبریری لاگ آؤٹ پٹ کو Logrus فارمیٹرز اور ہکس کے ذریعے ری ڈائریکٹ کیا جا سکتا ہے۔ - ٹیسٹنگ سپورٹ: ٹیسٹ ہک پیکج ٹیسٹوں میں لاگ پیغامات کی تصدیق کے لیے NewLocal، NewGlobal اور NewNullLogger معاونین فراہم کرتا ہے۔ - Fatal ہینڈلرز: RegisterExitHandler ان افعال کو رجسٹر کرتا ہے جو Fatal سطح کے پیغامات پر os.Exit(1) سے پہلے عمل میں آتے ہیں، جو خوبصورت شٹ ڈاؤن کے لیے مفید ہے۔ - تھریڈ سیفٹی: Logger ڈیفالٹ طور پر mutex سے محفوظ ہے؛ SetNoLock() لاکنگ کو غیر فعال کر سکتا ہے جب ہکس اور آؤٹ پٹ پہلے سے تھریڈ سیف ہوں۔ لاگ گردش جان بوجھ کر شامل نہیں ہے؛ README بیرونی ٹولز جیسے logrotate کی سفارش کرتا ہے۔ لائبریری میں ماحول کا کوئی بلٹ ان تصور نہیں ہے، لہذا ماحول کے لحاظ سے فارمیٹر اور ہک کا انتخاب ایپلیکیشن پر چھوڑ دیا گیا ہے۔