Запись в лог из action контроллеров? Только изучаю Yii и ООП, до этого программировал обычными функциями, поэтому хотел спросить о правильности такой реализации.
Я хочу записывать в лог разные действия юзеров на сайте, например при добавление коммента записать в лог.
Создал модель Log
* @property integer $id
* @property integer $created_at
* @property string $category
* @property integer $user_id
* @property string $username
* @property string $event
и в ней методpublic static function addLog($model)
{
if(Yii::$app->user->isGuest)
return false;
$log = new Log();
$log->created_at = time();
$log->user_id = Yii::$app->user->id;
$log->username = Yii::$app->user->identity->username;
$log->category = $model['category'];
$log->event = $model['event'];
$log->save();
}
в нужных экшинах контроллеров вызываю такif ($model->load(Yii::$app->request->post()))
{
if($model->save())
{
// Отправляем в лог
\app\modules\log\models\log::addLog(
[
'category' => 'comments',
'event' => 'Добавлен новый комментарий: ' . $model->post
]
);
или это все надо делать по другому?

21 Авг 2019 в 07:05
197 +1
1
Ответы
1

В целом, ваш подход к записи логов выглядит разумно. Однако, есть несколько улучшений, которые можно внести в ваш код:

Вместо передачи массива в метод addLog, лучше передавать сразу необходимые параметры. Например:public static function addLog($category, $event)
{
if(Yii::$app->user->isGuest)
return false;
$log = new Log();
$log->created_at = time();
$log->user_id = Yii::$app->user->id;
$log->username = Yii::$app->user->identity->username;
$log->category = $category;
$log->event = $event;
$log->save();
}При вызове метода addLog из контроллера можно сразу передавать необходимые значения:\app\modules\log\models\log::addLog('comments', 'Добавлен новый комментарий: ' . $model->post);

Если вам необходимо записывать логи различных событий с разными параметрами, можно рассмотреть возможность передачи объекта модели в метод addLog вместо массива или простых строк. Это позволит более гибко управлять форматом и содержанием логов.

Кроме того, рассмотрите возможность использования специализированных библиотек для работы с логами, таких как Monolog. Они предоставляют более продвинутые функции записи и обработки логов.

Надеюсь, эти рекомендации помогут вам улучшить свою реализацию записи логов в Yii.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир