یکی از ابزار های مفید و پرکاربرد فریم ورک yii2 سیستم گزارش گیری می باشد که به برنامه نویس این امکان را می دهد تا برنامه ی خود را بهتر مدیریت کند .
برای ثبت پیام هایی که سیستم (و یا خودمون تعریف می کنیم)گزارش گیری میکند به روش های زیر عمل می کنیم :
- Yii::trace()
- Yii::info()
- Yii::warning()
- Yii::error
که به ترتیب برای:
تریس کردن کد توسط برنامه نویس ,
ثبت اطلاعات مفیدی که به برنامه نویس کمک می کند تا کد خود را بهتر مدیریت کند ,
ثبت پیام های هشدار دهنده ای که به صورت اتفاقی ممکن است رخ دهد ,
ثبت خطاهایی که سیستم را دچار مشکل می کند .
//در گزارش گیری پیام هایی که ثبت میشه دارای سطوح مختلف و دسته بندی های مفاوتی می باشند .
برای تنظیمات گزارش گیری به قسمت main.php در config می رویم
و در قسمت components . کد زیر به صورت پیش فرض به صورت زیر می باشد
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ],
که امکان گزارش گیری در سطوح error و warning که در بالا اشاره کردیم را انجام می دهد .
نکته این که گزارش گیری به چند روش انجام می شود
-
DbTarget
-
EmailTarget
-
FileTarget
در دیتابیس
ارسال ایمیل
و ذخیره سازی در فایل
که ما از روش fileTarget استفاده کردیم
گزارشات در مسیر
/runtime/logs/app.log ذخیره می گردد.
برای گزارشگیری اطلاعات بر اساس سطوح دیگر و در دسته بندی های دیگر می توانید بر اساس نیاز خود آن ها را ایجاد نمایید
به این صورت :
'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ 'class' => 'yii\log\FileTarget', 'levels' => ['info'], 'categories' => ['rss'], 'logFile' => '@app/runtime/logs/rss/rss.log', ], ], ],
در کد بالا ما مشخص کردیم که سیستم ذخیره اطلاعات به صورت فایلی باشد
همچنین سطوح مورد استفاده را error و warning قرار دادیم
چیز جدیدی که اضافاه کردیم
level یا همون سطح می باشد که ما برابر با info قرار دادیم
و دسته بندی آن را rss تعیین کردیم
همچنین مسیر ذخیره سازی را در فولدری به نام rss و با نام rss.log قرار دادیم
در نهایت کاری که باید انجام بدیم
نحوه ی استفاده یا همون گزارش گیری می باشد
Yii::info($message,'rss');
با کد بالا ما پیامی را در گزارشات ثبت کردیم که جزئ دسته بندی rss می باشد
به این معنی که در rss.log ذخیره می گردد
نه در app.log