প্রকল্প সম্পর্কে

Logrus হল Go-এর জন্য একটি কাঠামোবদ্ধ লগার, যা স্ট্যান্ডার্ড লাইব্রেরি লগারের সাথে API-সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে। এটি রক্ষণাবেক্ষণ মোডে রয়েছে: প্রকল্পটি নিরাপত্তা, বাগ ফিক্স এবং কর্মক্ষমতা উন্নতির দিকে মনোযোগ দেয়, নতুন বৈশিষ্ট্যগুলি Go-এর log/slog-এর মতো আন্তঃকার্যক্ষমতা কাজের মধ্যে সীমাবদ্ধ। README-তে উল্লেখ করা হয়েছে যে কাঠামোবদ্ধ লগিং এখন Go-তে Zerolog, Zap এবং Apex-এর মতো বিকল্পগুলির মাধ্যমে ব্যাপকভাবে উপলব্ধ। মূল ক্ষমতাসমূহ: - সাতটি স্তরসহ লেভেলভিত্তিক লগিং: Trace, Debug, Info, Warning, Error, Fatal এবং Panic। একটি লগার নির্বাচিত গুরুত্বের সমান বা তার উপরের এন্ট্রিগুলি নির্গত করার জন্য কনফিগার করা যেতে পারে। - WithField এবং WithFields-এর মাধ্যমে কাঠামোবদ্ধ ফিল্ড, দীর্ঘ ফরম্যাটেড বার্তার পরিবর্তে আবিষ্কারযোগ্য কী-ভ্যালু লগিংকে উৎসাহিত করে। এন্ট্রিগুলি স্বয়ংক্রিয়ভাবে time, msg এবং level অন্তর্ভুক্ত করে। - ডিফল্ট ফিল্ড: 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 সহায়ক সরবরাহ করে। - ফ্যাটাল হ্যান্ডলার: RegisterExitHandler ফ্যাটাল-স্তরের বার্তাগুলিতে os.Exit(1)-এর আগে কার্যকর করা ফাংশন নিবন্ধন করে, যা সুন্দর শাটডাউনের জন্য দরকারী। - থ্রেড নিরাপত্তা: Logger ডিফল্টরূপে mutex-সুরক্ষিত; SetNoLock() লকিং অক্ষম করতে পারে যখন হুক এবং আউটপুট ইতিমধ্যে থ্রেড-নিরাপদ থাকে। লগ রোটেশন ইচ্ছাকৃতভাবে অন্তর্ভুক্ত নয়; README logrotate-এর মতো বাহ্যিক সরঞ্জামের সুপারিশ করে। লাইব্রেরিতে পরিবেশের কোনো অন্তর্নির্মিত ধারণা নেই, তাই পরিবেশ অনুসারে ফরম্যাটার এবং হুক নির্বাচন অ্যাপ্লিকেশনের উপর ছেড়ে দেওয়া হয়।