Структура модуля логов
Структура модуля логов
Разрабатываю модуль логов (пока только по ActiveRecord, будут также и произвольные сообщения).
На данный момент набросал следующую структуру в миграции:
http://pastebin.com/3LNUBMKM
В log_models добавляются логируемые модели, в log_attributes - соответственно список атрибутов для каждой модели.
log_models_changes отражает изменения модели, log_attributes_changes - соответственно каждого отдельно взятого атрибута.
log_list_attributes-changes - для атрибутов many-to-many (чтобы они не просто склеивались каким-то разделителем, а можно было извлечь и отформатировать как угодно).
До этого все лежало в одной табличке.
Все бы ничего, но поиск по таким логам и их читабельность оставляет желать лучшего + проблемы с рефакторингом неймспейсов классов моделей, названий атрибутов.
Поэтому решил предпринять попытку реорганизации.
Но глядя на эту структуру, думаю, а не overkill ли это?
Хотелось бы услышать советы и рекомендации.
P.S. null в добавлении ключей - это используются переопределенные методы, которые автоматически генерируют название, основываясь на конвенции.
На данный момент набросал следующую структуру в миграции:
http://pastebin.com/3LNUBMKM
В log_models добавляются логируемые модели, в log_attributes - соответственно список атрибутов для каждой модели.
log_models_changes отражает изменения модели, log_attributes_changes - соответственно каждого отдельно взятого атрибута.
log_list_attributes-changes - для атрибутов many-to-many (чтобы они не просто склеивались каким-то разделителем, а можно было извлечь и отформатировать как угодно).
До этого все лежало в одной табличке.
Все бы ничего, но поиск по таким логам и их читабельность оставляет желать лучшего + проблемы с рефакторингом неймспейсов классов моделей, названий атрибутов.
Поэтому решил предпринять попытку реорганизации.
Но глядя на эту структуру, думаю, а не overkill ли это?
Хотелось бы услышать советы и рекомендации.
P.S. null в добавлении ключей - это используются переопределенные методы, которые автоматически генерируют название, основываясь на конвенции.
Последний раз редактировалось arogachev 2015.03.30, 13:05, всего редактировалось 3 раза.
Мой профиль на Github
Re: Структура модуля логов
Может быть, кто-то тоже хочет поучаствовать в разработке, или подсказать, что еще может понадобиться с точки зрения юзера такого рода модуля. На данный момент интересует именно организация БД, насколько такая структура оправдана с точки зрения производительности (про некоторые из преимуществ уже указал выше + связи, целостность).
Мой профиль на Github
Re: Структура модуля логов
https://github.com/zelenin/yii2-request-log-module создал модуль логов реквестов. Потом планирую модуль изменений моделей. В принципе это простая разработка, и не вижу смысла в совместной разработке (работы на 4-8 часов).
По структуре: вы из админки хотите добавлять необходимые модели? Если да, то ок. Если будете поведение вешать для логирования (я так планирую), то лучше все в одной таблице держать, имхо.
По структуре: вы из админки хотите добавлять необходимые модели? Если да, то ок. Если будете поведение вешать для логирования (я так планирую), то лучше все в одной таблице держать, имхо.
Re: Структура модуля логов
Да, добавление и редактирование будет из админки. Но поведение тоже будет вешаться для кое-какой кастомизации, если быть точнее - для записи преобразованных (читаемых) значений атрибутов. А возможно, настройка будет делаться через конфиг модуля, пока не решил.
Мой профиль на Github
Re: Структура модуля логов
arogachev, а что там точно за функционал планируется?
Неплохой лог у друпала, полезный, журнал событий называется.
Позволяет показывать важную инфу как типа:
- инфа запрошенной страницы которая "не найдена"
- инфа страницы к которой "доступ запрещен"
- вход и выход пользователей
- инфа о добавлении/удалении контента
- ошибки пхп
- еще что то...
Журнал очищать можно ну и понятно чтобы циклические непросмотренные одинаковые сообщения не забивали собой журнал.
Неплохой лог у друпала, полезный, журнал событий называется.
Позволяет показывать важную инфу как типа:
- инфа запрошенной страницы которая "не найдена"
- инфа страницы к которой "доступ запрещен"
- вход и выход пользователей
- инфа о добавлении/удалении контента
- ошибки пхп
- еще что то...
Журнал очищать можно ну и понятно чтобы циклические непросмотренные одинаковые сообщения не забивали собой журнал.
Re: Структура модуля логов
история изменений объектов ARmaleks писал(а):arogachev, а что там точно за функционал планируется?
Неплохой лог у друпала, полезный, журнал событий называется.
Позволяет показывать важную инфу как типа:
- инфа запрошенной страницы которая "не найдена"
- инфа страницы к которой "доступ запрещен"
- вход и выход пользователей
- инфа о добавлении/удалении контента
- ошибки пхп
- еще что то...
Журнал очищать можно ну и понятно чтобы циклические непросмотренные одинаковые сообщения не забивали собой журнал.
Re: Структура модуля логов
как по мне - эти две вещи вообще разделить нужно.
Re: Структура модуля логов
какие эти две?S c писал(а):как по мне - эти две вещи вообще разделить нужно.
Re: Структура модуля логов
вот такое абсолютно неинтересно.zelenin писал(а): история изменений объектов AR
Типично - придумывают себе легенькие задачки, оторванные от практики, лишь бы запулить расширение.
Re: Структура модуля логов
тут вижу одну вещь. о каких двух вещах речь?)maleks писал(а):вот такое абсолютно неинтересно.zelenin писал(а): история изменений объектов AR
Типично - придумывают себе легенькие задачки, оторванные от практики, лишь бы запулить расширение.
насчет практики вы не правы. Как история изменений может быть неважной вещью?
Re: Структура модуля логов
по идее если делать логи на сайте то это должны быть одни логи.S c писал(а):как по мне - эти две вещи вообще разделить нужно.
А не - вот тут какие то логи для кодера.
А вон там логи для администратора.
Например страницу со списком не найденных страниц полезно видеть и админу чтобы увидеть битые ссылки и настроить редиректы.
А не какие то специфические логи по моделям доступные для пользования только кодером.
Re: Структура модуля логов
это не специфические логи, а вообще разные вещи. Как можно смешивать логи доступа и логи данных?maleks писал(а):по идее если делать логи на сайте то это должны быть одни логи.S c писал(а):как по мне - эти две вещи вообще разделить нужно.
А не - вот тут какие то логи для кодера.
А вон там логи для администратора.
Например страницу со списком не найденных страниц полезно видеть и админу чтобы увидеть битые ссылки и настроить редиректы.
А не какие то специфические логи по моделям доступные для пользования только кодером.
Re: Структура модуля логов
может она где то и будет нужна.zelenin писал(а): насчет практики вы не правы. Как история изменений может быть неважной вещью?
Но это и должно тогда называться - история изменения чего то.
А не лог. (Структура модуля логов)
Re: Структура модуля логов
вон ТС пишет:zelenin писал(а): это не специфические логи, а вообще разные вещи. Как можно смешивать логи доступа и логи данных?
Разрабатываю модуль логов (пока только по ActiveRecord, будут также и произвольные сообщения).
Re: Структура модуля логов
в любом месте, где вы будете работать не один в админке, и где изменения данных могут привести к потере денег.maleks писал(а):может она где то и будет нужна.zelenin писал(а): насчет практики вы не правы. Как история изменений может быть неважной вещью?
ну вы конечно правы, что это не универсальные логи - из контекста описания задачи видно, что называться оно должно Модуль логов изменения данных, типа того.maleks писал(а):Но это и должно тогда называться - история изменения чего то.
А не лог. (Структура модуля логов)
Re: Структура модуля логов
ну хз, что он имеет в виду. Пока тут об ARmaleks писал(а):вон ТС пишет:zelenin писал(а): это не специфические логи, а вообще разные вещи. Как можно смешивать логи доступа и логи данных?Разрабатываю модуль логов (пока только по ActiveRecord, будут также и произвольные сообщения).
Re: Структура модуля логов
"ошибки, логи доступа и тд" и "история изменений объектов AR"zelenin писал(а):какие эти две?S c писал(а):как по мне - эти две вещи вообще разделить нужно.
Re: Структура модуля логов
да, конечно. Это должны быть разные логи.S c писал(а):"ошибки, логи доступа и тд" и "история изменений объектов AR"zelenin писал(а):какие эти две?S c писал(а):как по мне - эти две вещи вообще разделить нужно.
Re: Структура модуля логов
maleks, возможно я не до конца объяснил.
Логи, которые вы описали, планируются к реализации тоже (в рамках одного модуля даже скорее всего). Я об этом вкратце упомянул. Смешивать с историей изменений моделей их, на мой взгляд, нецелесообразно.
Сейчас конкретно речь про изменение моделей AR и их атрибутов.
Про "легенькие задачки" - вообще не понял, как это относится к теме.
Цель - не "запулить расширение", как вы выразились, а сделать реюзабельный модуль, потребность в этом есть и не в одном проекте.
Логи будут "не только для кодера", можно и на фронтенде будет юзать, типа "стены" изменений чего-то.
Планируется кастомизация. что позволит вывод сообщений такого плана:
Пользователь Иван Иванов (ivanov@mail.ru) изменил пост "Yii2 SEO" (здесь ссылка для перехода), изменен контент, показан дифф контента (для текстовых полей).
Для many-many допустим: к списку городов добавлен "Санкт-Петербург".
Т.е. в читабельном виде.
И суть вопроса главного была именно в структуре БД, нормально ли она спроектирована и как это скажется на производительности в сравнении с тем, если держать все в одной таблице.
Логи, которые вы описали, планируются к реализации тоже (в рамках одного модуля даже скорее всего). Я об этом вкратце упомянул. Смешивать с историей изменений моделей их, на мой взгляд, нецелесообразно.
Сейчас конкретно речь про изменение моделей AR и их атрибутов.
Про "легенькие задачки" - вообще не понял, как это относится к теме.
Цель - не "запулить расширение", как вы выразились, а сделать реюзабельный модуль, потребность в этом есть и не в одном проекте.
Логи будут "не только для кодера", можно и на фронтенде будет юзать, типа "стены" изменений чего-то.
Планируется кастомизация. что позволит вывод сообщений такого плана:
Пользователь Иван Иванов (ivanov@mail.ru) изменил пост "Yii2 SEO" (здесь ссылка для перехода), изменен контент, показан дифф контента (для текстовых полей).
Для many-many допустим: к списку городов добавлен "Санкт-Петербург".
Т.е. в читабельном виде.
И суть вопроса главного была именно в структуре БД, нормально ли она спроектирована и как это скажется на производительности в сравнении с тем, если держать все в одной таблице.
Последний раз редактировалось arogachev 2015.03.30, 21:01, всего редактировалось 3 раза.
Мой профиль на Github
Re: Структура модуля логов
Я все же попробую реализовать описанный подход. Буду рад советам и предложениям.
Мой профиль на Github