0 Пользователей и 1 Гость просматривают эту тему.
  • 27 Ответов
  • 1571 Просмотров
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Компонент чтения логов
« : 23.03.2018, 11:57:52 »
Преамбула и вводная задача

Многие разрабатывают свои расширения и при этом не используют логирование действий и/или ошибок своего расширения или же разрабатывают собственный логгер, почему-то полностью игнорируя уже имеющийся штатный логгер Joomla.
Как правило, причины две:
1. не умение пользоваться JLog
2. логи неудобно просматривать

Если с первой проблемой достаточно просто справиться, просто изучив документацию ( https://docs.joomla.org/Using_JLog#Logging_a_specific_log_file ), то вторая проблема действительно стоит ребром: необходимо либо выкачивать лог по ftp либо просматривать его через файл-менеджер в панели хостинга, оба варианта так себе, но иного решения нет (во всяком случае, я не нашел, поправьте меня, если не прав) :(

Решение

Компонент просмотра сохраненных логов ядра и расширений Joomla

Возможности:
– чтение файлов логов и вывод их содержимого в табличном виде в админке
– авторазворачивание json-строки сообщения при просмотре лога в админке
– возможность скачать файл лога в формате CSV (два варианта: классический и специально для открытия в excel без плясок с бубном)
– возможность удалить файл лога
– (upd 1.2.0) возможность чтения файла лога ошибок PHP (при условии, что он установлен в php.ini и доступен для чтения с сайта)
– (upd 1.3.0) архивирование файла лога в архив с именем файла лога + текущая дата и время (при условии подключенного расширения php-zip), файл лога при этом не очищается и не удаляется, архив сохраняется в папку, указанную в параметрах компонента, по умолчанию /tmp

Требования:
– Joomla 3.2 и выше (задействован com_ajax)
– PHP 5.6 и выше (ну тут сами понимаете  ^-^)

Минус: файл лога читается и выводится целиком, если он большой, то это займет время, создаст нагрузку на ресурсы и трафик, поэтому
Рекомендация разработчикам расширений: при интенсивном логировании предусмотрите авторазбиение логов на части, по типам задач, по периодам, еще как-либо, но чтобы логи ваши не весили мегатонны  ;)

« Последнее редактирование: 13.02.2019, 15:29:30 от AlekVolsk »
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #1 : 23.03.2018, 13:19:03 »
Добрый день!

У меня логи оплаты самописного компонента формируются в таком формате:
Спойлер
[свернуть]

Сам файл находится тут administrator/logs/robokassa.log и виден в Вашем компоненте.

Проблема одна - не отображаются данные:
Показано записей: 0

Как можно решить эту проблему без изменения существующей структуры лога?

Спасибо!
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #2 : 23.03.2018, 14:13:55 »
никак не решить эту проблему, т.к. ваш лог пишется самописным логгером, а не логеером Joomla
могу предложить писать в лог сообщение в джейсоне, которое потом можно будет развернуть в читабельный массив после допила
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #3 : 23.03.2018, 15:26:47 »
никак не решить эту проблему, т.к. ваш лог пишется самописным логгером, а не логеером Joomla
могу предложить писать в лог сообщение в джейсоне, которое потом можно будет развернуть в читабельный массив после допила
Немного странное решение, но я, разумеется, говорю это как дилетант.
Предполагал, что возможно внести в код компонента простое условие, при котором он бы распознавал формат лог-файла и выводил его в удобноваримом виде:

логи Joomla - в виде таблицы, как сейчас
логи, подобные моему - как текст (без форматирования)

Ведь там и там из .log файла чтение идет, без всяких json
 
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #4 : 23.03.2018, 17:27:58 »
На самом деле логи Joomla тоже текстовые, как один текст от другого отличить?
А вообще ничего странного нет: не надо собственных костылей, используйте уже имеющееся апи Joomla

А еще у вас проблема с безопасностью: если перейти по адресу site/administrator/logs/robokassa.log, то я смогу прочитать ваш лог и получу достаточную информацию об обороте средств через ваш сайт
« Последнее редактирование: 23.03.2018, 17:31:17 от AlekVolsk »
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #5 : 23.03.2018, 17:34:13 »
На самом деле логи Joomla тоже текстовые, как один текст от другого отличить?
А вообще ничего странного нет: не надо собственных костылей, используйте уже имеющееся апи Joomla

А еще у вас проблема с безопасностью: если перейти по адресу site/administrator/logs/robokassa.log, то я смогу прочитать ваш лог и получу достаточную информацию об обороте средств через ваш сайт

Да, Вы правы. Спасибо за ответ.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #6 : 23.03.2018, 18:31:17 »
Добавил авторазворачивание json-строки сообщения при просмотре лога в админке
Фикс mime-типа скачиваемого файла лога

Для тех, кто успел поставить версию 1.0.0: эта версия не содержала указателя на автоматический сервер обновлений, пожалуйста, сделайте обновление на новую версию вручную.
« Последнее редактирование: 23.03.2018, 21:29:05 от AlekVolsk »
*

zikkuratvk

  • Глобальный модератор
  • 4457
  • 315 / 2
  • Разрабатываем для Joomla
Re: Компонент чтения логов
« Ответ #7 : 23.03.2018, 21:41:34 »
Сделай расшифровку с поиском)) для людей не в теме будет манна небесная.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #8 : 24.03.2018, 00:22:32 »
Сделай расшифровку с поиском)) для людей не в теме будет манна небесная.
Вадим, не понял тебя, что именно расшифровывать необходимо? подробнее пожалуйста
*

Taatshi

  • Глобальный модератор
  • 5113
  • 471 / 1
  • Верстаем и немножко кодим. Обращайтесь ;)
Re: Компонент чтения логов
« Ответ #9 : 24.03.2018, 07:24:27 »
Цитировать
при интенсивном логировании предусмотрите авторазбиение логов на части, по типам задач, по периодам, еще как-либо, но чтобы логи ваши не весили мегатонны

Это должно быть в настройках компонента.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #10 : 24.03.2018, 11:37:55 »
Это должно быть в настройках компонента.
достаточно проблематично, т.к. просто так на лету разбить на части и внедрить пагинатор не получится, использовать временные таблицы проблематично (представь, что в логе лям строк, очистили таблицу, залили в нее лог, затем начинаем отдавать кусками, - сколько времени займет операция?), хранить большой лог в памяти как состояние модели - вообще бред, других вариантов не вижу
*

Taatshi

  • Глобальный модератор
  • 5113
  • 471 / 1
  • Верстаем и немножко кодим. Обращайтесь ;)
Re: Компонент чтения логов
« Ответ #11 : 24.03.2018, 13:22:50 »
Алекс, разбиение нужно делать не на факте выдач  лога в админку, а в процессе записи. Ты должен перехватить запись в файл и обработать ее по установленным пользователем параметрам. Как минимум, писать в разные файлы.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #12 : 24.03.2018, 16:06:23 »
@Taatshi я не делаю запись в файл ) я читаю файлы, которые пишут другие, кто угодно, но не я )) этот компонент - просто инструмент для чтения файлов логов, не более )
*

Taatshi

  • Глобальный модератор
  • 5113
  • 471 / 1
  • Верстаем и немножко кодим. Обращайтесь ;)
Re: Компонент чтения логов
« Ответ #13 : 24.03.2018, 16:23:59 »
Я это понимаю. Пишет Joomla, Тебе нужно этот процесс перехватить и модифицировать. Впрочем, как знаешь.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #14 : 24.03.2018, 17:32:48 »
Ну нет, ничего перехватывать и модифицировать я не буду, да и в JLog нет триггеров, чтобы можно было что-то нормально без хаков перехватить, а что-либо хакать я не буду, и так вся Joomla на костылях ))
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #15 : 30.04.2018, 01:19:28 »
обновление:
- исправлен баг с выводом json с глубокой вложенностью
- поддержка кастомных колонок
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #16 : 08.06.2018, 18:16:45 »
обновление:
- понижено требование к версии php, теперь минимальная - 5.6
- возможность чтения файла лога ошибок PHP (при условии, что он установлен в php.ini и доступен для чтения с сайта)
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #17 : 01.10.2018, 06:34:32 »
Думаю, что была бы полезна такая фича, как архивирование. Задать в настройках путь до папки с архивами и в меню добавить кнопку "Архивировать" рядом с "Удалить".
Когда ежедневных логов скапливается много вместо удаления было бы самое то. И в селекте список маленький и архивчик на всякий случай  ^-^
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #18 : 01.10.2018, 15:34:45 »
рассмотрю такой вариант ) реализуемо, только лог php отдельно висит и его после архивации не удалить
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #19 : 01.10.2018, 15:36:01 »
рассмотрю такой вариант ) реализуемо, только лог php отдельно висит и его после архивации не удалить
Спасибо! А php-лог как раз совсем не важен  ^-^
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #20 : 10.02.2019, 19:26:22 »
Думаю, что была бы полезна такая фича, как архивирование
реализовано в 1.3.0 от 2019-02-10
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #21 : 10.02.2019, 21:18:09 »
реализовано в 1.3.0 от 2019-02-10
Отличная работа! Единственное пожелание - все-таки настраивать путь для папки с архивами
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #22 : 13.02.2019, 15:27:31 »
Обновление 1.3.1:
- полностью исключен jQuery (спасибо @Septdir)
- в параметрах можно указать папку сохранения архивов логов, по умолчанию /tmp
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #23 : 15.02.2019, 12:02:01 »
Обновление 1.3.1:
- полностью исключен jQuery (спасибо @Septdir)
- в параметрах можно указать папку сохранения архивов логов, по умолчанию /tmp
Логично было бы, чтобы архивы ПЕРЕМЕЩАЛИСЬ в указанную папку, а не оставались в общей.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #24 : 15.02.2019, 14:08:38 »
архивы изначально создаются в той папке, которая в настройках указана, зачем лишнее движение по перемещению куда-либо? создайте отдельную папку в пределах сайта и укажите её, будет вам нужное только вам место, это всё сильно индивидуально
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #25 : 15.02.2019, 14:56:45 »
архивы изначально создаются в той папке, которая в настройках указана, зачем лишнее движение по перемещению куда-либо? создайте отдельную папку в пределах сайта и укажите её, будет вам нужное только вам место, это всё сильно индивидуально
Прошу прощения, что некорректно выразился. Ожидал таких действий при нажатии кнопки:
1. Создается архив в нужной папке
2. Оригинал удаляется
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: Компонент чтения логов
« Ответ #26 : 15.02.2019, 22:49:13 »
2. Оригинал удаляется
нет, как раз специально оригинал не удаляется, т.к. не всем и не всегда это необходимо, если вам это надо - просто нажмите ещё одну кнопку
*

stepan39

  • Захожу иногда
  • 352
  • 22 / 0
Re: Компонент чтения логов
« Ответ #27 : 16.02.2019, 07:06:24 »
.. и не всегда это необходимо
Наверное, если есть один какой бесконечный лог, данные постоянно дописываются в его конец (ну типа error.php). Если логи ежедневные (как у меня), то разумеется нечего их оставлять после архивирования. Еще раз повторюсь, что обычно логика архивирования у любого расширения Joomla такая: отправить в архив - это именно ПЕРЕМЕЩЕНИЕ в другую папку (категорию и т.д.).
В любом случае огромное спасибо за проделанную работу.

UPDATE: релиз 1.3.3 снимает любые "хотелки", все супер!!!
« Последнее редактирование: 24.02.2019, 10:21:56 от stepan39 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SM FAQ - компонент Вопрос-Ответ для Joomla 2.5+

Автор SmokerMan

Ответов: 677
Просмотров: 113838
Последний ответ 11.06.2019, 13:30:36
от roymustafa
JLweather - компонент и модуль погоды Joomla

Автор zikkuratvk

Ответов: 290
Просмотров: 50738
Последний ответ 06.02.2018, 17:48:33
от kern.USR
Компонент экспорта новстной ленты сайта в Яндекс и Рамблер новости

Автор Dron79

Ответов: 247
Просмотров: 55026
Последний ответ 07.10.2017, 00:02:35
от kabban
Компонент фото и видео альбома для Joomla 3.x

Автор xchesh

Ответов: 98
Просмотров: 24953
Последний ответ 11.08.2017, 16:15:07
от DragonFlyzz
INews - компонент автоматического наполнения сайта новостями

Автор zikkuratvk

Ответов: 25
Просмотров: 8899
Последний ответ 20.03.2017, 12:13:25
от Артём 2014