گزارش log
ثبت رویدادهای برنامه با سطح اهمیت، پیشوند، فیلدهای ساختاریافته، قالب JSON و نوشتن در پرونده.
واردسازی گزارش
برای برنامهای که روی سرور اجرا میشود، سرچاپ کافی نیست: باید بدانید هر پیام چقدر مهم است، کی ثبت شده و بتوانید پیامهای کماهمیت را خاموش کنید. بستهی گزارش چهار سطح دارد (اشکالزدایی، اطلاعات، هشدار، خطا) و فقط پیامهایی را ثبت میکند که سطحشان از سطح تنظیمشده کمتر نیست؛ سطح پیشفرض «اطلاعات» است.
گزارش بهطور پیشفرض در خروجی خطا (stderr) و با زمان نوشته میشود. نمونهها برای خروجی ثابت، زمان را خاموش کردهاند.
پایاها و متغیرها
سطح اشکال زدایی LevelDebug
پایا سطح اشکال زدایی: صحیح۳۲ = 0واردسازی گزارش
روال ریشه:
گزارش.به خروجی استاندارد()
گزارش.نمایش زمان(نادرست)
گزارش.تنظیم پیشوند("[برنامه]")
گزارش.اشکال زدایی("این دیده نمیشود")
گزارش.اطلاعات("سرور آماده است")
گزارش.هشدار("حافظه رو به پایان است")
گزارش.خطا("اتصال قطع شد")
گزارش.تنظیم سطح(گزارش.سطح اشکال زدایی)
گزارش.اشکال زدایی("حالا دیده میشود")
گزارش.ثبت(گزارش.سطح هشدار، "با سطح دلخواه")
سرچاپ گزارش.دریافت سطح()، گزارش.نام سطح(گزارش.سطح خطا)، گزارش.تجزیه سطح("warn")، گزارش.سطح اطلاعات
پایانسطح اطلاعات LevelInfo
پایا سطح اطلاعات: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
سطح هشدار LevelWarn
پایا سطح هشدار: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
سطح خطا LevelError
پایا سطح خطا: صحیح۳۲ = 3نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
قالب متن FormatText
پایا قالب متن: صحیح۳۲ = 0واردسازی گزارش
روال ریشه:
گزارش.به خروجی استاندارد()
گزارش.نمایش زمان(نادرست)
ناپایا کلیدها := وکتور {} برگردان وکتور<رشته>
ناپایا مقدارها := وکتور {} برگردان وکتور<رشته>
دیرکن کلیدها.آزادکن()
دیرکن مقدارها.آزادکن()
کلیدها.بیفزا("user")
مقدارها.بیفزا("sara")
کلیدها.بیفزا("ms")
مقدارها.بیفزا("42")
گزارش.اطلاعات با فیلد("درخواست انجام شد"، کلیدها، مقدارها)
گزارش.هشدار با فیلد("کند بود"، کلیدها، مقدارها)
گزارش.خطا با فیلد("شکست خورد"، کلیدها، مقدارها)
گزارش.تنظیم سطح(گزارش.سطح اشکال زدایی)
گزارش.اشکال زدایی با فیلد("جزئیات"، کلیدها، مقدارها)
گزارش.تنظیم قالب(گزارش.قالب جیسون)
گزارش.اطلاعات("به شکل جیسون")
سرچاپ گزارش.دریافت قالب() == گزارش.قالب جیسون، گزارش.قالب متن
ناپایا ف := وکتور {} برگردان وکتور<رشته>
دیرکن ف.آزادکن()
ف.بیفزا(گزارش.فیلد("path"، "/login"))
ف.بیفزا(گزارش.فیلد عدد("status"، ۲۰۰))
ف.بیفزا(گزارش.فیلد منطقی("cached"، نادرست))
سرچاپ گزارش.کلید مقدار("پاسخ"، ف)
پایانقالب جیسون FormatJSON
پایا قالب جیسون: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
روالها
نام سطح LevelName
روال نام سطح(l: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
تجزیه سطح ParseLevel
روال تجزیه سطح(s: رشته): صحیح"warn" را به سطح تبدیل میکند؛ برای خواندن سطح از تنظیمات.نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
تنظیم سطح SetLevel
روال تنظیم سطح(l: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
دریافت سطح GetLevel
روال دریافت سطح(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
تنظیم پیشوند SetPrefix
روال تنظیم پیشوند(p: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
نمایش زمان ShowTime
روال نمایش زمان(b: منطقی)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
تنظیم قالب SetFormat
روال تنظیم قالب(f: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
دریافت قالب GetFormat
روال دریافت قالب(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
تنظیم چرخش SetRotation
روال تنظیم چرخش(max_bytes: صحیح۶۴، max_backups: صحیح)max_bytes بزرگتر شد، کنار گذاشته شود و حداکثر max_backups نسخهی قدیمی بماند.واردسازی گزارش
واردسازی ورودی خروجی
روال ریشه:
گزارش.نمایش زمان(نادرست)
سرچاپ گزارش.به پرونده("app.log")
گزارش.تنظیم چرخش(۱۰۲۴ * ۱۰۲۴، ۳)
گزارش.اطلاعات("نوشته شد در پرونده")
گزارش.بستن پرونده()
گزارش.به خطای استاندارد()
چاپ ورودی خروجی.خواندن پرونده("app.log")
پایانبه خطای استاندارد ToStderr
روال به خطای استاندارد()نمونهی این مورد همراه با موارد بالاتر آمده است: log-ToFile.salam
به خروجی استاندارد ToStdout
روال به خروجی استاندارد()نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
به پرونده ToFile
روال به پرونده(path: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: log-ToFile.salam
بستن پرونده CloseFile
روال بستن پرونده()نمونهی این مورد همراه با موارد بالاتر آمده است: log-ToFile.salam
ثبت Log
روال ثبت(l: صحیح، msg: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
اشکال زدایی Debug
روال اشکال زدایی(msg: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
اطلاعات Info
روال اطلاعات(msg: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
هشدار Warn
روال هشدار(msg: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
خطا Error
روال خطا(msg: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Info.salam
اشکال زدایی قالبی Debugf
روال اشکال زدایی قالبی(tmpl: رشته، args: وکتور<رشته>){} با مقدار بعدی پر میشود.واردسازی گزارش
روال ریشه:
گزارش.به خروجی استاندارد()
گزارش.نمایش زمان(نادرست)
ناپایا م := وکتور {} برگردان وکتور<رشته>
دیرکن م.آزادکن()
م.بیفزا("سارا")
م.بیفزا("۳")
گزارش.اطلاعات قالبی("کاربر {} وارد شد و {} پیام دارد"، م)
گزارش.هشدار قالبی("تلاش ناموفق برای {}"، م)
گزارش.خطا قالبی("کاربر {} مسدود شد"، م)
گزارش.تنظیم سطح(گزارش.سطح اشکال زدایی)
گزارش.اشکال زدایی قالبی("شناسه {}"، م)
پایاناطلاعات قالبی Infof
روال اطلاعات قالبی(tmpl: رشته، args: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Infof.salam
هشدار قالبی Warnf
روال هشدار قالبی(tmpl: رشته، args: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Infof.salam
خطا قالبی Errorf
روال خطا قالبی(tmpl: رشته، args: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-Infof.salam
مهلک Fatal
روال مهلک(msg: رشته)واردسازی گزارش
روال ریشه:
گزارش.مهلک("پروندهی پیکربندی پیدا نشد")
پایانفیلد Field
روال فیلد(key: رشته، val: رشته): رشتهکلید=مقدار میسازد.نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
فیلد عدد FieldInt
روال فیلد عدد(key: رشته، val: صحیح۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
فیلد منطقی FieldBool
روال فیلد منطقی(key: رشته، val: منطقی): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
کلید مقدار KV
روال کلید مقدار(msg: رشته، fields: وکتور<رشته>): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
اشکال زدایی با فیلد DebugKV
روال اشکال زدایی با فیلد(msg: رشته، keys: وکتور<رشته>، vals: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
اطلاعات با فیلد InfoKV
روال اطلاعات با فیلد(msg: رشته، keys: وکتور<رشته>، vals: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
هشدار با فیلد WarnKV
روال هشدار با فیلد(msg: رشته، keys: وکتور<رشته>، vals: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam
خطا با فیلد ErrorKV
روال خطا با فیلد(msg: رشته، keys: وکتور<رشته>، vals: وکتور<رشته>)نمونهی این مورد همراه با موارد بالاتر آمده است: log-InfoKV.salam