定制 besnovatyj/yii2-cms-logs 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

besnovatyj/yii2-cms-logs

Composer 安装命令:

composer require besnovatyj/yii2-cms-logs

包简介

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

README 文档

README

Модуль-вьювер всех лог-файлов в @runtime/logs: и Monolog-датированных, и нумерной ротации Yii FileTarget (app.log, app.log.1, …), и ZIP-архивов. Логика идентична besnovatyj/yii2-cms-monolog, но охват шире (тот модуль — только monolog*). Классификатор LogFileName намеренно продублирован (пакеты независимы).

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

<base>[-<Y-m-d>][.<YmdHis>].log[.<N>][.zip]
  • base — логический ключ канала/группы (app, monolog, monolog-auth, …); по нему группируется история.
  • -<Y-m-d> — суточная ротация Monolog RotatingFileHandler (статического «текущего» файла нет — всегда датированный; «текущий» = с датой сегодня).
  • .<YmdHis> — метка принудительной ротации «в историю» (механизм copy+truncate).
  • .<N> — нумерная ротация Yii FileTarget (app.log.1, app.log.2, …).
  • .zip — ZIP-архив.

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

Детерминированный парсер имени вместо хрупких регэкспов:

  • zip — оканчивается на .zip;
  • history — есть archiveStamp ИЛИ numIndex (нумерная ротация Yii) ИЛИ rotateDate < сегодня;
  • current — иначе (даты/номера нет, либо дата == сегодня).

getBase() — ключ канала (история группируется по нему, НЕ по slug). looksLikeLog() — любой файл, содержащий .log (опц. .N и/или .zip).

Слои

  • entities/Log — обёртка над файлом. getKind(), getChannelKey(), getIsCurrent(), getIsZip(), getCounts() (по plain-тексту Yii … [уровень]; для zip — пусто). slug = Inflector::slug(имя_файла) — стабилен per-file, в т.ч. для zip.
  • repositories/FileLogRepository — один проход по каталогу, фильтр по kind. getBySlug() — среди всех файлов любого вида. findHistoryBySlug() — все НЕ-current файлы того же канала (история + zip).
  • services/LogManageService — бизнес-операции (ниже).
  • controllers/backend/LogController + views. view отдаёт файл инлайн text/plain; tail — последние строки через tail.

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

Страница Содержимое Действия
index текущие файлы (по одному на канал/группу) History, View, Rotate, Zip, Download, Delete
index-history ротированные (Monolog-дата, Yii-.N, принуд.) View, Zip, Download, Delete
index-zip только .zip Download, Delete
history?slug= история конкретного канала (история + zip) View, Zip, Download, Delete (View/Zip скрыты для zip)

Download доступен для файла на любой стадии.

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

В текущий файл может прямо сейчас писать открытый дескриптор писателя (Monolog / Yii FileTarget), поэтому:

  • Rotate (только текущий файл): копировать в <имя>.<YmdHis>.log (станет history), затем обнулить текущий — открытый дескриптор продолжает писать в тот же inode (теперь пустой), без потери записей.
  • Zip: упаковать в <имя>.zip. Для текущего файла оригинал не удаляется, а обнуляется (та же причина). Для остальных — упаковать и удалить.

История изменений логики

Модуль отпочковался от логики просмотра логов; классификация была завязана на устаревшие регэкспы (одна дата-метка, односегментное имя), из-за чего многоканальные Monolog-файлы и заархивированные с меткой YmdHis пропадали. Заменено единой моделью LogFileName + группировкой по base. Мёртвые действия zip-all/clean-all (без экшенов в контроллере) удалены.

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固