PHPackages                             besnovatyj/yii2-cms-monolog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. besnovatyj/yii2-cms-monolog

ActiveYii2-extension[Logging &amp; Monitoring](/categories/logging)

besnovatyj/yii2-cms-monolog
===========================

Модуль управления логами Monolog для Yii2 CMS

v1.0.0(4d ago)01MITPHP &gt;=8.4

Since Jul 7Compare

[ Source](https://github.com/besnovatyj/yii2-cms-monolog)[ Packagist](https://packagist.org/packages/besnovatyj/yii2-cms-monolog)[ RSS](/packages/besnovatyj-yii2-cms-monolog/feed)WikiDiscussions Synced today

READMEChangelogDependencies (5)Versions (2)Used By (0)

yii2-cms-monolog — просмотр и управление Monolog-логами
=======================================================

[](#yii2-cms-monolog--просмотр-и-управление-monolog-логами)

Модуль-вьювер логов, которые пишет Monolog в каталог `@runtime/logs`. Работает **только** со своей конвенцией имён (`monolog*`). Для всех логов приложения — отдельный модуль `besnovatyj/yii2-cms-logs` (та же логика, более широкий охват).

> Примечание: файл `MONOLOG_LOGS_README.md` в этом каталоге описывает старое поведение и устарел — актуальная логика здесь.

Откуда берутся файлы (контракт с писателями)
--------------------------------------------

[](#откуда-берутся-файлы-контракт-с-писателями)

Логи пишет `common\components\log\MonologTarget` через `common\components\log\HandlerFactory` (хендлер `rotating_file`, JSON-формат — одна запись на строку, `BATCH_MODE_NEWLINES`). Каналы объявляются декларативно в `app/common/config/log.php` (core: `app`, `auth`, `modman`) и в `Module::getLogChannels()` устанавливаемых модулей (modman собирает их в `@config-dyn-gen/logChannelsConfigFile.php`).

`RotatingFileHandler` **всегда** пишет в датированный файл — статического «текущего» файла не существует. «Текущий» = файл с сегодняшней датой.

Конвенция имён файлов
---------------------

[](#конвенция-имён-файлов)

```
[-][.].log[.zip]

```

- `base` — логический ключ канала: `monolog`, `monolog-auth`, `monolog-modman`. Конвенция: `monolog-{channel}.log` → при ротации `monolog-{channel}-Y-m-d.log`; глобальный канал — `monolog.log` → `monolog-Y-m-d.log`.
- `-` — суточная ротация Monolog.
- `.` — метка принудительной ротации «в историю» (см. Rotate).
- `.zip` — ZIP-архив.

Классификация: `entities/LogFileName`
-------------------------------------

[](#классификация-entitieslogfilename)

Детерминированный парсер имени (а не набор хрупких регэкспов). Раскладывает имя на `base`, `rotateDate`, `archiveStamp`, `isZip` и определяет вид:

- **zip** — имя оканчивается на `.zip`;
- **history** — есть `archiveStamp` ИЛИ `rotateDate < сегодня`;
- **current** — иначе (даты нет или она == сегодня).

`getBase()` — ключ канала; по нему группируется история (НЕ по slug). `looksLikeLog()` — фильтр каталога: только `monolog*…\.log[.zip]`.

Слои
----

[](#слои)

- **`entities/MonologLog`** — обёртка над файлом. `getKind()`, `getChannelKey()`, `getIsCurrent()`, `getIsZip()`, чтение записей с пагинацией, подсчёт уровней (`getCounts` — по `level_name` JSON; для zip возвращает пусто). `slug` = `Inflector::slug(имя_файла)` — стабилен per-file, в т.ч. для zip.
- **`repositories/MonologFileLogRepository`** — один проход по каталогу, фильтрация по `kind`. `getBySlug()` ищет среди **всех** файлов любого вида. `findHistoryBySlug()` — все НЕ-current файлы того же канала (история + zip).
- **`services/MonologLogManageService`** — бизнес-операции (ниже).
- **`controllers/backend/MonologLogController`** + views.

Страницы и действия
-------------------

[](#страницы-и-действия)

СтраницаСодержимоеДействия`index`текущие файлы (по одному на канал)History, View, Rotate, Zip, Download, Delete`index-history`ротированные/принудительно ротированные `.log`View, Zip, Download, Delete`index-zip`только `.zip`Download, Delete`history?slug=`история конкретного канала (история + zip)View, Zip, Download, Delete (View/Zip скрыты для zip)`view?slug=`просмотр записей с пагинацией (JSON)Download, Rotate (если current), Zip, DeleteDownload доступен для файла на любой стадии.

Rotate и Zip — механизм copy+truncate
-------------------------------------

[](#rotate-и-zip--механизм-copytruncate)

В текущий файл прямо сейчас пишет открытый дескриптор Monolog, поэтому:

- **Rotate** (только текущий файл): копировать в `..log` (станет history), затем **обнулить** текущий. Дескриптор Monolog продолжает писать в тот же inode (теперь пустой) — записи не теряются и не «разъезжаются».
- **Zip**: упаковать в `.zip`. Для **текущего** файла оригинал не удаляется, а обнуляется (та же причина). Для остальных — упаковать и удалить.

Связанные пакеты
----------------

[](#связанные-пакеты)

`common\components\log\MonologTarget`, `common\components\log\HandlerFactory`, `app/common/config/log.php`, `modules/modman` (сборщик каналов модулей).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance99

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4dab004c4cab25d241bbf453f63cb48e6226d00bd84f50315e735c257c4a1b40?d=identicon)[besnovatyj](/maintainers/besnovatyj)

---

Tags

logcmsyii2monolog

### Embed Badge

![Health badge](/badges/besnovatyj-yii2-cms-monolog/health.svg)

```
[![Health](https://phpackages.com/badges/besnovatyj-yii2-cms-monolog/health.svg)](https://phpackages.com/packages/besnovatyj-yii2-cms-monolog)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M3.2k](/packages/craftcms-cms)[skeeks/cms

SkeekS CMS — control panel and tools based on php framework Yii2

13825.8k60](/packages/skeeks-cms)[mero/yii2-monolog

The Monolog integration for the Yii framework.

41192.3k](/packages/mero-yii2-monolog)[lav45/yii2-activity-logger

Tools to store user activity log for Yii2

3460.8k](/packages/lav45-yii2-activity-logger)[silverleague/logviewer

View your SilverStripe logs from inside the CMS

114.6k](/packages/silverleague-logviewer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
