گزارشها (لاگ)
وقتی چیزی درست کار نمیکند، جواب تقریباً همیشه در یکی از این سه گزارش است:
| گزارش | چه چیزی نشان میدهد | کجاست |
|---|---|---|
| گزارش ساخت | دریافت کد، نصب وابستگیها، کامپایل | زبانهٔ «استقرارها» ← هر ساخت ← «گزارش ساخت» |
| گزارش استقرار | اجرای نسخهٔ تازه و دلیل آماده نشدنش | زبانهٔ «استقرارها» ← هر نسخه ← «گزارش استقرار» |
| گزارش اجرا | هر چیزی که برنامه روی خروجی استاندارد (stdout/stderr) چاپ میکند | زبانهٔ «لاگها»ی سرویس، بخش «لاگهای اجرا» |
اگر ساخت شکست خورد، گزارش ساخت را ببینید. اگر ساخت موفق بود ولی سرویس بالا نیامد، گزارش استقرار و گزارش اجرا را.
گزارش اجرا
برنامه باید گزارشها را روی خروجی استاندارد بنویسد (console.log، print، log.Println)، نه در فایل. گزارشی که در فایل نوشته شود اینجا دیده نمیشود.
- آخرین ۵۰۰ خط نشان داده میشود (تا ۲۰۰۰ خط با CLI).
- میتوانید با متن جستجو کنید و بر اساس سطح (
error،warn،info) فیلتر کنید. سطح از روی متن خط تشخیص داده میشود، پس گزارشهای JSON با فیلدlevelیا خطهایی که باERRORشروع میشوند بهتر فیلتر میشوند. - اگر سرویس چند رپلیکا دارد، گزارش همهٔ رپلیکاها به ترتیب زمان کنار هم نشان داده میشود و هر خط بعد از زمانش یک برچسب کوتاه مثل
[x2k4p]دارد که میگوید از کدام رپلیکا آمده.
گزارش اجرا مال نسخهای است که الان اجرا میشود. بعد از استقرار تازه یا ریاستارت، گزارشهای نسخهٔ قبلی دیگر در دسترس نیستند. اگر سرویس کرش کرده باشد، آخرین خروجی قبل از کرش جدا نگه داشته و نشان داده میشود. برای گزارشهایی که باید بمانند، آنها را به یک سرویس گزارشگیری بیرونی بفرستید.
از خط فرمان
gerdoo logs api # آخرین ۵۰۰ خط
gerdoo logs api --since 10m # ده دقیقهٔ اخیر
gerdoo logs api --grep "payment" --level error
gerdoo logs api --tail 2000
gerdoo service builds api # فهرست ساختها
gerdoo service builds api logs <buildId> # گزارش یک ساخت
gerdoo service releases api logs # چرا آخرین استقرار بالا نیامدگزارشها را به دستیار بدهید
دستیار هوشمند پنل گزارش ساخت آخرین شکست و انتهای گزارش کرش را خودش میخواند. کافی است بپرسید «چرا استقرار شکست خورد؟».
امنیت
رمزها و توکنها را در گزارش چاپ نکنید (مثلاً console.log(process.env)). هر کسی که به اپلیکیشن دسترسی دارد، حتی با نقش مشاهدهگر، گزارشها را میبیند.