[Полезняшка] Расширение логирования. Управление оповещениями.

radv

Client
Регистрация
11.05.2015
Сообщения
3 876
Реакции
2 109
Баллы
113
Всем привет.

Очень часто при написании шаблонов на C# и удобстве отладки рекомендуется добавлять оповещения в лог, для визуального восприятия прохождения процесса выполнения проекта, чтобы сразу было видно на каком шаге возникает ошибка. В итоге информация в логе (количество выводимых оповещений) разрастается, и чтобы выводить в лог только нужные оповещения, я и написал предлагаемый обработчик, который можно использовать в любом из своих шаблонов.

Вы можете использовать не только стандартные типы оповещений (Информация, Предупреждение, Ошибка), но и добавить к ним уровни приоритета по выводу информации в лог.

Через входные настройки или через код можете сами задавать уровень приоритета.

Кроме уровня приоритета, можно задавать настройки надо ли сохранять информацию из лога в отдельный файл, и надо ли отправлять оповещение в телеграм (например, при ошибке или по какому-то другому условию).

Покажу на примере для большей наглядности.

Стандартные оповещения выглядят так.

C#:
Развернуть Свернуть Копировать
project.SendInfoToLog("Текст Инфо", true);
project.SendWarningToLog("Текст предупреждения", true);
project.SendErrorToLog("Текст ошибки", true);

Вы можете изменить показывать или нет оповещение в ZennoPoster, при этом в ProjectMaker оповещения будут показываться всегда.

Теперь посмотрите, как могут выглядеть оповещения с дополнительными настройками.
C#:
Развернуть Свернуть Копировать
myLog.SendInfo("Информация", "info", 3, true, true);

myLog.SendInfo("Предупреждение", "warning", 5, true, true);

myLog.SendInfo("Ошибка без остановки", "error", 3, true, true);

Вроде изменения не большие, но тут указаны все параметры (включая не обязательные)

В сокращенном варианте, для типа информации можно написать так:

C#:
Развернуть Свернуть Копировать
myLog.SendInfo("Информация");

это практически полный аналог записи

C#:
Развернуть Свернуть Копировать
project.SendInfoToLog("Текст Инфо");

А теперь представьте, если у Вас много таких оповещений, но часть из них нужна только для большей информативности, и некоторые из них вы просто хотели бы отключить или сохранять в файл или отправлять в телеграм. В этом случае можно использовать другие параметры (их названия и количество, можете изменять самостоятельно.)

Например:

При добавлении оповещений проекта, Вы решаете, что у Вас будет 3 уровня (или сколько хотите) с разделением их по важности. 1 – важная информация (по умолчанию), 2 – дополнительная менее важная информация, 3 – более подробная информация (например, если вы описываете выполнение каждого шага, и нужна отладочная информация с значениями переменных или какими-то еще параметрами)

Тогда код оповещения может быть таким:
C#:
Развернуть Свернуть Копировать
myLog.SendInfo("Инфо по умолчанию", "info", 1); или myLog.SendInfo("Информация");

myLog.SendInfo("Информация дополнительно", "info", 2);

myLog.SendInfo("Информация для отладки", "info", 3);

и если Вы через настройки уровня оповещений зададите уровень 2, то сообщения с уровнем 3 не будут показываться в логе, но при этом в файл с логом могут сохранятся файлы с любым уровнем лога, чтобы его можно было просмотреть при необходимости и быстрее найти нужное место, где происходит ошибка или неверное выполнение задачи.

Дополнительные типы оповещений, которые можно создать на основе трех стандартных.
C#:
Развернуть Свернуть Копировать
myLog.SendInfo("TRACE", "trace", 6, true, true);

myLog.SendInfo("DEBUG", "debug", 3, true, true);

myLog.SendInfo("Fatal Ошибка с остановкой", "fatal", 6, true, true);

Для оповещений об ошибке можно сделать дополнительный тип “fatal”, зачем это нужно? Просто не все оповещения типа “error” могут быть критическими для выполнения проекта и можно продолжать выполнение дальше (например, повторить выполнение в цикле или если действие не обязательное), а если после такой ошибки дальнейшее выполнение бессмысленно, то можно просто остановить проект с выводом исключения и подробной информацией об ошибке.

Используя информацию из других статей на форуме, можно подключить отправку критических ошибок или информацию о ходе выполнения проекта себе в телеграмм, чтобы оперативно отреагировать в нужный момент.

Так же сокращается количество кода. Один раз написать в нужный код обработки в методе из общего кода и одной строчкой вызова оповещения будут выполняться все нужные действия, в том числе сохранение в файл и т.п.

Код в шаблоне с комментариями, для лучшего понимания.
 
Номер конкурса шаблонов
  1. Четвертый конкурс шаблонов
Уровень сложности
Продвинутый
Категория
  1. Полезно

Вложения

Последнее редактирование:
и если Вы через настройки уровня оповещений зададите уровень 2, то сообщения с уровнем 3 не будут показываться в логе, но при этом в файл с логом могут сохранятся файлы с любым уровнем лога, чтобы его можно было просмотреть при необходимости и быстрее найти нужное место, где происходит ошибка или неверное выполнение задачи.
Хм, интересное решение, как я сам раньше не догадался до такого)
 
Хм, интересное решение, как я сам раньше не догадался до такого)
ну я тоже не сразу догадался, так сделать. Все с опытом приходит, и если возникает потребность сделать, что то удобнее. :-)
 
Выглядит очень круто, на днях обязательно опробую. Спасибо большое, пока что это лучшее для меня на этом конкурсе.
 
можно использовать в любом из своих шаблонов.


правильно понимаю, что если с С# не работаю и со словами "обработчик" не знаком - в свои шаблоны не добавить?
 
правильно понимаю, что если с С# не работаю и со словами "обработчик" не знаком - в свои шаблоны не добавить?
Можно использовать в кубиках C#. Для использования готового кода, больших знаний C# не нужно, Сначала можете в моем шаблоне попрактиковаться и добавить несколько других разных кубиков, только для оповещений нужно будет добавлять кубик C# с кодом из примера, вместо стандартного кубика с оповещением. Такая замена кубика на кубик, может снизить удобство использования кода и создания проектов, будет расти количество кубиков. При написании проекта на кубиках, отладка делается проще, всегда видно кубик на котором произошла остановка по ошибке, а вот при написании через C# поможет в удобстве при отладке. Если захотите перенести все в свой проект/шаблон, то переносите код из блоков Общий код и ссылки Using, ну и код из кубика C#.
 
Скринов бы добавил в чем изменения
Шаблон установить не могу, а с телефона не понятно вообще о чем речь) Что то где то поменялось, но показывать конечно же не буду)
 
Скринов бы добавил в чем изменения
Шаблон установить не могу, а с телефона не понятно вообще о чем речь)
Какой скрин Вам нужен? Изменения только в том, что сообщение или показывается или нет в зависимости от его уровня. По умолчанию в ProjectMaker показываются все сообщения лога. Используя уровень лога, можно показывать в логе ProjectMaker/ZennoPoster только нужные сообщения, а остальные записывать в файл с логом или использовать только при отладке проекта, для большей информативности.
Какие сложности с открытием шаблона в ProjectMaker? Какая у Вас версия ZennoPoster? Выдает какие то ошибки при открытии шаблона? В шаблоне код прокомментирован и при запуске можете увидеть все отличия.
 
Последнее редактирование:
на 5.31 не запустился
 
Попробуй эту версию шаблона
 

Вложения

на основе этого шаблона сделан плагин (свой кубик) [Plugin ProjectMaker] Свой кубик для лога.

Создаем интерфейс настроек

46504


Изменяем кубик и задаем значения из настроек BotUI

46505


Сохраняем проект как плагин

46507


В настройках плагина можно задавать информацию о себе.

46509


Задаем название для ProjectMaker, номер версии, иконку, шифрование (если нужно)

Так же рекомендуется поставить галочку: Выводить ошибки плагина в лог, так вы и пользователи плагина сможете понимать, где произошли ошибки (в плагине или нет)

46510


После публикации, вы получите файл с расширением *.zpg это и есть плагин.
и при добавлении в ProjectMaker, вы получите отдельный кубик с настройками

46511


46512


скачать его можно из этой темы [Plugin ProjectMaker] Свой кубик для лога.
 

Вложения

  • image004.png
    image004.png
    10,7 KB · Просмотры: 526
  • Спасибо
Реакции: Shytov и Juniorcpa

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)