Search by

illusiard / auditlog

Illusiard

Audit log extension for Yii2

Package info

github.com/Illusiard/yii2-auditlog

Type:yii2-extension

pkg:composer/illusiard/auditlog

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

v1.2.0 2026-09-19 20:38 UTC

This package is not auto-updated.

Last update: 2026-10-17 20:57:55 UTC


README

Модуль логирования и аудита для Yii2-приложений.

Позволяет логировать:

  • создание, изменение и удаление ActiveRecord-моделей;
  • diff изменённых полей;
  • произвольный контекст (route, IP, user-agent и т.д.);
  • бизнес-события (через прямой вызов логгера).

Поддерживает подключение через Behavior и не требует наследования моделей.

Возможности

  • ✅ Логирование create / update / delete
  • ✅ Diff только изменённых полей
  • ✅ Контекст выполнения (route, IP, user agent и т.д.)
  • ✅ Автоматическое создание entity_type и action, если их нет
  • ✅ Кэширование справочников
  • ✅ Bootstrap-автоподключение
  • ✅ Не зависит от имени компонента в конфиге
  • ✅ Готов к использованию как Composer-пакет

Требования

  • PHP 8.5+
  • Yii 2.0.55+

Установка

composer require illusiard/yii2-auditlog

После установки модуль автоматически подключается через Bootstrap.

Однако для проверки и подтягивания пользователей, нужно добавить в конфиг с User-классом:

use illusiard\auditlog\components\AuditLogger;

[
    'components' => [
        'auditlog' => [
            'class' => AuditLogger::class,
            'userClass' => app\models\User::class,
        ]
    ],
]

Миграции

php yii migrate --migrationPath=@illusiard/auditlog/migrations

Подключение AuditBehavior

use illusiard\auditlog\components\AuditBehavior;

class Order extends ActiveRecord
{
    public function behaviors(): array
    {
        return [
            'audit' => [
                'class' => AuditBehavior::class,
                'entityTypeCode' => 'order',
            ],
        ];
    }
}

Контекст

'context' => function () {
    return [
        'route' => Yii::$app->requestedRoute,
        'ip' => Yii::$app->request->userIP,
        'userAgent' => Yii::$app->request->userAgent,
    ];
},

Ручное логирование

use illusiard\auditlog\components\AuditLogger;

AuditLogger::getInstance()->log(
    entityTypeCode: 'order',
    entityId: 42,
    actionCode: 'publish',
    diff: null,
    context: ['reason' => 'manual publish']
);

Лицензия

MIT