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

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
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” могут быть критическими для выполнения проекта и можно продолжать выполнение дальше (например, повторить выполнение в цикле или если действие не обязательное), а если после такой ошибки дальнейшее выполнение бессмысленно, то можно просто остановить проект с выводом исключения и подробной информацией об ошибке.

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

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

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

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

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

Последнее редактирование:

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
и если Вы через настройки уровня оповещений зададите уровень 2, то сообщения с уровнем 3 не будут показываться в логе, но при этом в файл с логом могут сохранятся файлы с любым уровнем лога, чтобы его можно было просмотреть при необходимости и быстрее найти нужное место, где происходит ошибка или неверное выполнение задачи.
Хм, интересное решение, как я сам раньше не догадался до такого)
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Хм, интересное решение, как я сам раньше не догадался до такого)
ну я тоже не сразу догадался, так сделать. Все с опытом приходит, и если возникает потребность сделать, что то удобнее. :-)
 

Asmus003

Client
Регистрация
25.03.2018
Сообщения
259
Благодарностей
66
Баллы
28
Выглядит очень круто, на днях обязательно опробую. Спасибо большое, пока что это лучшее для меня на этом конкурсе.
 

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 697
Благодарностей
940
Баллы
113
можно использовать в любом из своих шаблонов.

правильно понимаю, что если с С# не работаю и со словами "обработчик" не знаком - в свои шаблоны не добавить?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
правильно понимаю, что если с С# не работаю и со словами "обработчик" не знаком - в свои шаблоны не добавить?
Можно использовать в кубиках C#. Для использования готового кода, больших знаний C# не нужно, Сначала можете в моем шаблоне попрактиковаться и добавить несколько других разных кубиков, только для оповещений нужно будет добавлять кубик C# с кодом из примера, вместо стандартного кубика с оповещением. Такая замена кубика на кубик, может снизить удобство использования кода и создания проектов, будет расти количество кубиков. При написании проекта на кубиках, отладка делается проще, всегда видно кубик на котором произошла остановка по ошибке, а вот при написании через C# поможет в удобстве при отладке. Если захотите перенести все в свой проект/шаблон, то переносите код из блоков Общий код и ссылки Using, ну и код из кубика C#.
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
:bo::ay: класс. не хватало мне такого
 

Gefest

Client
Регистрация
30.04.2016
Сообщения
73
Благодарностей
14
Баллы
8
Скринов бы добавил в чем изменения
Шаблон установить не могу, а с телефона не понятно вообще о чем речь) Что то где то поменялось, но показывать конечно же не буду)
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Скринов бы добавил в чем изменения
Шаблон установить не могу, а с телефона не понятно вообще о чем речь)
Какой скрин Вам нужен? Изменения только в том, что сообщение или показывается или нет в зависимости от его уровня. По умолчанию в ProjectMaker показываются все сообщения лога. Используя уровень лога, можно показывать в логе ProjectMaker/ZennoPoster только нужные сообщения, а остальные записывать в файл с логом или использовать только при отладке проекта, для большей информативности.
Какие сложности с открытием шаблона в ProjectMaker? Какая у Вас версия ZennoPoster? Выдает какие то ошибки при открытии шаблона? В шаблоне код прокомментирован и при запуске можете увидеть все отличия.
 
Последнее редактирование:

Vavildi

Client
Регистрация
29.02.2016
Сообщения
188
Благодарностей
104
Баллы
43
на 5.31 не запустился
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Попробуй эту версию шаблона
 

Вложения

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
на основе этого шаблона сделан плагин (свой кубик) [Plugin ProjectMaker] Свой кубик для лога.

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

46504


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

46505


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

46507


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

46509


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

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

46510


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

46511


46512


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

Вложения

  • Спасибо
Реакции: Shytov и Juniorcpa

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