پرش به مطلب اصلی

Log

با لاگ‌ها مثل stream رفتار کن

لاگ‌ها راهی هستن برای دیدن رفتار یک برنامه‌ی در حال اجرا. توی محیط‌های سروری، معمولاً لاگ‌ها توی یک فایل روی دیسک نوشته می‌شن (که بهش می‌گن "فایل لاگ")؛ ولی این فقط یه روش برای خروجی دادنه.

در واقع، لاگ‌ها streamی از رویدادهای زمان‌بندی‌شده هستن که از خروجی همه‌ی پردازش‌ها و سرویس‌های پشتیبان جمع‌آوری می‌شن. معمولاً لاگ‌ها به‌صورت متن هستن و هر خط نماینده‌ی یک رویداده این جریان نه نقطه‌ی شروع داره، نه پایان؛ فقط تا زمانی که برنامه در حال اجراست، ادامه داره.

برنامه‌ نباید درگیر مدیریت یا مسیر‌دهی خروجی لاگ بشه. نباید خودش فایل لاگ بسازه یا باهاش کاری داشته باشه. بلکه هر پردازش باید لاگ‌هاش رو مستقیم، بدون بافر، به stdout (خروجی استاندارد) بنویسه.
توی حالت local، برنامه‌نویس می‌تونه این stream رو همون لحظه توی ترمینال ببینه و رفتار برنامه رو بررسی کنه.

اما توی محیط staging یا production، این خروجی‌ها توسط پلتفرم اجرا (execution environment) جمع‌آوری می‌شن، با خروجی‌های دیگه ترکیب می‌شن، و به یک یا چند مقصد نهایی برای مشاهده و آرشیو بلندمدت فرستاده می‌شن. این مقصدها برای خود برنامه قابل دیدن یا تنظیم نیستن، و کاملاً توسط محیط اجرا مدیریت می‌شن. ابزارهای متن‌باز مثل Logplex یا Fluentd می‌تونن برای این کار استفاده بشن.

این جریان لاگ رو می‌شه توی یک فایل نوشت یا همزمان توی ترمینال تماشا کرد. مهم‌تر از اون، می‌شه اون رو به سیستم‌هایی مثل Splunk (برای جستجو و تحلیل لاگ) یا ابزارهایی مثل Hadoop/Hive فرستاد. این ابزارها امکانات زیادی برای بررسی رفتار برنامه در طول زمان فراهم می‌کنن.

البته مهمه که [[Log Rotation]] هم داشته باشیم

تفاوت apm ها و logger در این جمله است

[!APM vs LOG] Logging is for events with identity, events that will be inspected individually. Metrics are for events that will never have identity and will only be understood statistically.