Панель логов

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

Панель логов находится в нижней части Robin Studio в разделе «Лог». В панели логов отображается подробный ход выполнения задач роботом. Панель логов выглядит следующим образом:

Лог включает в себя:

  • Подготовку к запуску робота

  • Время старта робота.

  • Время начала выполнения каждой задачи.

  • Время завершения выполнения каждой задачи.

  • Информацию о возникших ошибках.

  • Информацию о возникших предупреждениях.

  • Время завершения работы робота.

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

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

При нажатии на строки, которые не относятся к действиям (например, запись о переключении движков), просто ничего не происходит.

Поиск логов действий и копирование лога

В окне «Название или номер действия» осуществляется поиск необходимого действия.

Введенное наименование будет подсвечено зеленым цветом в логах, можно переходить по найденным наименованиям при помощи стрелок:

При нажатии на крайнюю правую иконку «Копировать лог» в поле лога, будет скопирован весь записанный лог работы робота.

Виды логов

Логи можно отфильтровать по следующим уровням:

В таблице приведены уровни фильтрации логов.

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

В таблице ниже приведены уровни записи логов:

Открепление/Закрепление панели логов

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

Далее вкладку «Лог» можно разместить с четырех сторон от рабочего поля со схемой. Для этого необходимо потянуть вкладку левой кнопкой мыши к выбранной стороне панели навигации, расположенной в центре:

После появления синей области отпустить левую кнопку мыши. Вкладка «Лог» закрепится с выбранной стороны от рабочего поля со схемой:

Точно также можно разместить вкладку «Лог» по краям студии.

Для этого свободно плавающую вкладку «Лог» необходимо потянуть левой кнопкой мыши к выбранной стороне панели навигации по краям студии:

После появления синей области отпустить левую кнопку мыши. Вкладка «Лог» закрепится с выбранного края студии:

Вкладка «Лог» так же может быть закреплена рядом с вкладкой «Схема робота».

Для этого необходимо нажать правой кнопкой мыши на плавающую вкладку «Лог» и выбрать значение «Tabbed document».

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

Вкладка «Лог» так же может быть закреплена рядом с любой вкладкой в ROBIN Studio.

Для этого необходимо свободно плавающую вкладку «Лог» потянуть левой кнопкой мыши к выбранной вкладке до появления синего прямоугольника:

А затем отпустить кнопку мыши. Вкладка «Лог» закрепится около нужной вкладки в ROBIN Studio.

Формирование и хранение логов

В таблице ниже представлено описание лог-файлов ROBIN Studio, ROBIN Player, ROBIN Agent, ROBIN Executor, исходников (схем) роботов, исполнения готовых программных роботов.

Компонент Пример лога Формат записи Место формирования и хранения логов (куда передаются)
ROBIN Studio Логи работы самого приложения. Формируются и хранятся локально там же, где установлено приложение. Удаляются файлы логов автоматически, по достижению лимита количества этих файлов (старые файлы заменяются новыми). Через конфигурационный файл приложения Studio.exe.config можно настроить путь сохранения и название файла лога, кодировку, максимальный размер файла лога, максимальное количество хранимых файлов лога, формат записи (паттерн) строки лога. Логи позволяют контролировать процессы самого приложения и выявить ошибки, возникшие во ходе работы ROBIN Studio.
1 ROBIN Studio Формат названия: log[n].log, где n – это порядковый номер файла лога
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
  • Информационное сообщение (datetime - дата и время выполнения процесса; pid- process id –идентификатор процесса; thread – количество потоков; message – название совершенного процесса; source – источник процесса; category – категория процесса; identity – пользователь под которым выполнен процесс)
%USERPROFILE%/AppData/Local/Temp/Robin Platform/2.0.0/StudioLogs
Типы сообщения логов * <INFO> содержит информацию о работе самой студии (загрузка студии; подключение экзекьютора; завершение работы студии; подключение визуальных модулей и т.д.) * <DEBUG> Level – debug. содержит информацию о процессах, происходящих внутри студии (открытие/закрытие проекта; действия, совершаемые роботом и т.д.). * <ERROR> содержит информацию об ошибке. Level – error. После тех же блоков, что и в <INFO> и <DEBUG> следует блок exception, содержащий в себе блоки message – текст ошибки. stackTrace - Трассировка стека, позволяющая отслеживать последовательность вызванных функций - до точки, в которой трассировка стека была создана.
ROBIN Player Логи работы самого приложения. Формируются и хранятся локально там же, где установлено приложение. Удаляются файлы логов автоматически, по достижению лимита количества этих файлов (старые файлы заменяются новыми). Настройка производится в конфигурационном файле RobotPlayer.exe.config. Логи позволяют контролировать процессы самого приложения и выявить ошибки, возникшие во ходе работы ROBIN Player.
2 ROBIN Player Формат названия: log[n].log, где n – это порядковый номер файла лога
  • Информационное сообщение (datetime - дата и время выполнения процесса; pid- process id –идентификатор процесса; thread – количество потоков; message – название совершенного процесса; source – источник процесса; category – категория процесса; identity – пользователь под которым выполнен процесс)
%USERPROFILE%/AppData/Local/Robin/PlayerLogs
ROBIN Agent Логи работы самого приложения. Формируются и хранятся локально там же, где установлено приложение. Удаляются файлы логов автоматически, по достижению лимита количества этих файлов (старые файлы заменяются новыми). Настройка производится в конфигурационном файле Robin.Agent.dll.config. Логи позволяют контролировать процессы самого приложения и выявить ошибки, возникшие во ходе работы ROBIN Agent.
3 ROBIN Agent Формат названия: log[n].log, где n – это порядковый номер файла лога
  • Информационное сообщение (datetime - дата и время выполнения процесса; pid- process id –идентификатор процесса; thread – количество потоков; message – название совершенного процесса; source – источник процесса; category – категория процесса; identity – пользователь под которым выполнен процесс)
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
%USERPROFILE%/AppData/Roaming/Robin Platform/2.0.0/Agent/Logs
Исходники (схемы) роботов Логи исполнения исходников, запущенных через ROBIN Studio. На каждый исходник создается отдельный файл лога. При перезапуске одного и того же исходника его файл каждый раз перезаписывается информацией о новом запуске. Таким образом, для каждого запускаемого исходника всегда существует только один файл лога, содержащий информацию только о последнем запуске этого исходника. Логи исходников позволяют проконтролировать работу схемы робота и выявить ошибки, возникшие в каких-либо действиях сценария робота.
4 Схемы роботов Формат названия: [Название робота]-[n].log, где n – это дата и время начала работы робота.
  • Информационное сообщение;
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
  • Модуль от которого получено сообщение
%USERPROFILE%/AppData/Local/Programs/Robin Platform/2.0.0/RobotLogs
Сообщение типа Error содержит информацию о ошибке процесса и следующие модули:
  • Message – информация об ошибки
  • robotId
  • actionNumber
  • uniqueName
  • actionId
Исполнение готовых программных роботов На каждого робота создается отдельный файл лога. При перезапуске одного и того же робота его файл каждый раз перезаписывается информацией о новом запуске. Таким образом, для каждого запускаемого робота всегда существует только один файл лога, содержащий информацию только о последнем запуске этого робота. Если робот завершил работу без ошибок, то будет сформирован пустой лог-файл. Если во время работы робота возникли ошибки, то в лог файле будет записана только информация об ошибке. Логи хранятся в той же папке, что и логи исходников (схем) робота.
5 Исполнение готовых программных роботов Формат названия: [Название робота]-[n].log, где n – это дата и время начала работы робота. При корректном завершении работы робота лог представляет собой пустой файл. Сообщение типа Error содержит информацию о ошибке процесса и следующие модули: * Message – информация об ошибки * robotId * actionNumber * uniqueName * actionId %USERPROFILE%/AppData/Local/Programs/Robin Platform/2.0.0/RobotLogs
ROBIN Executor Отдельно формируются логи каждого движка (net, java, python). Файлы логов Net и Java удаляются автоматически, по достижению лимита колличества этих файлов (старые файлы заменяются новыми). Через конфигурационный файл NetExecutor.exe.config для Net можно настроить те же параметры, что и для ROBIN Studio. Для Java – через файл logback.xml. Для python пока что нет отдельного конфигурационного файла для настройки логирования, но его файлы также автоматически удаляются по достижению лимита количества этих файлов (максимальное количество = 10). Логи python сохраняются в двух файлах: python_engine.log - это логи Python движка. python_executor.log - это логи Python экзекютора.
6 ROBIN Executor Формат названия: java.log
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
  • Информационное сообщение (message – название совершенного процесса; loglevel – уровень логирования; dataTime - дата и время выполнения процесса; exeption – исключение. Обычно null, в логе с ошибкой содержит message и stacktrace)
%USERPROFILE%/AppData/Roaming/Robin Platform/2.0.0/Executor/Logs
Формат названия: python_executor.log; python_engine.log
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
  • Модуль от которого получено сообщение;
  • Информационное сообщение python_executor.log (module - модуль от которого получено сообщение; status – статус процесса; content – описание процесса, в него может входить сообщение об ошибках)
  • Информационное сообщение Python_engine.log ( message – название совершенного процесса; thread – название потоков)
Формат названия: log[n].log, где n – это порядковый номер файла лога
  • Дата и время записи;
  • Пользователь под которым запущен компонент;
  • Тип сообщения лога;
  • Информационное сообщение (level – уровень логирования; datetime - дата и время выполнения процесса; pid- process id –идентификатор процесса; thread – количество потоков; message – название совершенного процесса; source–источник процесса;category категория процесса; identity – пользователь под которым выполнен процесс
Типы сообщения логов * <INFO> содержит информацию о работе самой студии (загрузка студии; подключение экзекьютора; завершение работы студии; подключение визуальных модулей и т.д.) * <DEBUG> Level – debug. содержит информацию о процессах, происходящих внутри студии (открытие/закрытие проекта; действия, совершаемые роботом и т.д.). * <WARN> level – Warning, содержит предупреждение о внештатном использовании, например, неожиданные параметры вызова и т.д.

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

Компонент Пример лога Пример лога с ошибкой
ROBIN Studio Oct 26 03:19:07 DESKTOP-UBUAANO <DEBUG>{«level»:»Debug»,»datetime»:»2021-10- 26T15:19:07.4143472+03:00» ,»pid»:15572,»thread»:1,»message»:»InitProjectLoaderModule()», «source»:»Robin.Studio.Modules.LdapModule.LdapModuleInitialization»,»category»: «LdapModuleInitialization»,»identity»:»DESKTOP- UBUAANO\persi»} Oct 26 03:25:45 DESKTOP-UBUAANO <ERROR> {«level»:»Error»,»datetime»:»2021-10-26T15:25:45.9490191+03:00»,»pid»:4836,»thread»:1,»message»:»SaveExecutableScenarioToFile failed» «source»:»Robin.Studio.Core.Application.ApplicationViewModelCommands»,»category»:»ApplicationViewModelCommands»,»identity»:»DESKTOP-UBUAANO\persi»,»exception»:{«message»:»У действия Добавить N заявки не выбрана версия»,»stackTrace»:» в Robin.Studio.Core.DiagramPrimitives.Extensions.ActionExtensions.<…>в Robin.Studio.Core.Application. ApplicationViewModelCommands.SaveExecutableScenarioToFile()»,»source»:»Robin.Studio.Core.DiagramPrimitives»,»type»:»System.NullReferenceException»}}
ROBIN Player {«datetime»:»2021-10-27T15:35:49.0142064+03:00»,»pid»:18164,»thread»:13,»message»: «PipeServer WaitForConnection «,»source»:»Robin.RobotPlayer.App»,»category»:»Application», «identity»:»DESKTOP-UBUAANO\persi»} {«level»:»Warning»,»datetime»:»2021-11-02T09:19:18.3494074+03:00»,»pid»:10936,»thread»:1,»message»:»Get Favorites failed»,»source»:»Robin.RobotPlayer.Ply.Services. StorageService»,»category»:»StorageService»,»identity»:»DESKTOP-UBUAANO\persi»,»exception»:{«message»:»Не удалось найти часть пути «C:\Users\persi\AppData\Local\Robin\Storage\Favorites.zip».»,»stackTrace»:» в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)rn в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)rn в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)rn в System.IO.Compression.ZipFile.Open(String archiveFileName, ZipArchiveMode mode, Encoding entryNameEncoding)rn в Robin.RobotPlayer.Ply.Repositories.FavoriteRepository.Get()rn в Robin.RobotPlayer.Ply.Services.StorageService.GetFavorites()»,»source»:»mscorlib»,»type»: «System.IO.DirectoryNotFoundException»}}
ROBIN Agent DESKTOP-UBUAANO <DEBUG> {«level»:»Debug»,»datetime»:»2021-10-20T10:05:40.9722638+03:00», «pid»:6196,»thread»:14,»message»:»Получено имя пользователя persi»,»source»: «Robin.Agent.RobotExecution.State.StateEventProcessors.CreatedStateProcessor»,»category»: «CreatedStateProcessor»,»identity»:»DESKTOP-UBUAANO\persi»} Oct 20 09:26:04 DESKTOP-UBUAANO <ERROR> {«level»:»Error»,»datetime»:»2021-10-20T09:26:04.720179+03:00»,»pid»:6196,»thread»:1,»message»:»TryCreateConnection failed»,»source»: «RabbitMqClient: Offline»,»category»:»RabbitMqClientBase»,»identity»:»DESKTOP-UBUAANO\persi»,»exception»:{«message»:»The operation has timed out.»,»stackTrace»:» at RabbitMQ.Client.Impl.TaskExtensions.TimeoutAfter(Task task, TimeSpan timeout)rn at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectOrFail(ITcpClient socket, AmqpTcpEndpoint endpoint, TimeSpan timeout)»,»source»:»RabbitMQ.Client»,»type»:»System.TimeoutException»}}
Схемы роботов 2021-10-27T17:25:04.436+03:00 RobotDeveloper DESKTOP-UBUAANO Robin.Engine 10792 {«message»: «actionStartMessage»,»ParametersMap»:{«fileName»:»тест»,»dirPath»:»C:\Users\persi\ OneDrive\Рабочий стол»,»overwrite»:»True»},»robotId»:»b5d2b5d8-5827-4fb2-b793-f892809266c7» «actionNumber»:null,»uniqueName»:»Создать файл Excel 1»,»actionId»:»ac9100b8-768e-4f4b-985b -5eb18b5a61ec»} 2021-10-27T17:25:07.255+03:00 Error DESKTOP-UBUAANO Robin.Action 10792 {«message»:»428668b0-f475-47b7-914d-58d394453638 возникло Robin.Exception.FileNotFound в Robin.Excel. Open: File „C:\Users\persi\OneDrive\Рабочий стол\тест“ was not found»,»robotId»:»b5d2b5d8-5827-4fb2-b793-f892809266c7»,»actionNumber»:null,»uniqueName»:»Открыть 1»,»actionId»:»428668b0-f475-47b7-914d-58d394453638»}
Исполнение готовых программных роботов Пустой текстовый файл 2021-11-03T08:58:44.836+03:00 Error DESKTOP-UBUAANO Robin.Action 400 {«message»:»Failed at executing action: Robin.Excel.CellSetValue, Exception: Ошибка установки значения А1=значение. Cell is incorrect: [А1]»,»robotId»:»170332e0-0b56-4c1b-956f-689268a50573»,»actionNumber»:null,»uniqueName»:»Установить значение ячейки 1»,»actionId»:»4e8b790e- 51fa- 4c0c-b5b7-d61ffabbc11c»}
ROBIN Executor java.log октября 20 10:11:45 DESKTOP-UBUAANO DEBUG {«message»:»Try to initialize timestamp», «logLevel»:»DEBUG»,»dateTime»:»октября 20 10:11:45»,»exception»:null} октября 26 15:40:09 DESKTOP-UBUAANO ERROR{«message»:null,»logLevel»:»ERROR»,»dateTime»:»октября 26 15:40:09»,»exception»:{«message»:null,»stacktrace»:»BusinessException[type =Robin.Exception.ElementNotFound, typeVersion=null, source=Robin.Selenium.SendClick,parameters= {stackTrace=ru.robin.selenium.seleniumactionshelper.ElementUtils. getReachableElement(ElementUtils.java:91)nru.robin.selenium.SendClick.doActionWork(SendClick.java:91)nru.robin.sdk.action.AbstractRobinAction.execute(AbstractRobinAction. java:38)nru.robin.engine.Engine.b(Engine.java:1251)nru.robin.engine.Engine.c(Engine.java:161)njava.lang.Thread.run(Thread.java:748)}, message=null]rntat ru.robin.selenium.seleniumactionshelper.ElementUtils.getReachableElement(ElementUtils.java:91)rntat ru.robin.selenium.SendClick.doActionWork (SendClick.java:91)rntat ru.robin.sdk.action.AbstractRobinAction.execute(AbstractRobinAction.java:38)rntat ru.robin.engine.Engine.b(Engine.java:1251)rntat ru.robin.engine.Engine.c(Engine.java:161)rntat java.lang.Thread.run(Thread.java:748)rn»}}
ROBIN Executor Python_executor.log 2021-08-31T14:20:05.849+03:00 DEBUG DESKTOP-UBUAANO Robin.Executor 1548 {«module»: «PythonExecutor.modules.Executor», «status»: «running», «content»: «All ZMQ Pollers registered»} 2021-11-01T17:18:02.639+03:00 DEBUG DESKTOP-UBUAANO Robin.Executor 12504 {«module»: «PythonExecutor.modules.Executor», «status»: «running», «content»: «Got inproc msg from Engine. Received message: b“\n\x10\n\x0eROBOT_FINISHED\x1a\xaf\x06\n$a78ae3da-9472-4d2f-83a6-e35a11ae7c05\x12\x1d\x12\x1bRobot finished successfully\x1a\x0c\x08\x9a\xee\xff\x8b\x06\x10\xc0\x91\xea\xaf\x02*\xd9\x05<ActionInOut schemaVersion=»5.4.0» scenarioLogLevel=»ActionDeveloperError»> \n <InOutResources/>\n <ActionBreakpoints/>\n <ActionLogLevels>\n <ActionLogLevel actionId=»7e9fc174-90a1-49ad-a5ec-e3149fd2fb5c» logLevel=»Error»/>\n <ActionLogLevel actionId=»887c25d3-be6f-4a0e-882d-a365eb211c91» logLevel=»Error»/>\n <ActionLogLevel actionId=»428668b0-f475-47b7-914d-58d394453638» logLevel= «Error»/>\n <ActionLogLevel actionId=»4e8b790e-51fa-4c0c-b5b7-d61ffabbc11c» logLevel=»Error»/>\n <ActionLogLevel actionId=»101044ed-8cf2-4252-bb4a-b8782e5bf5d1» logLevel=»Error»/>\n <ActionLogLevel actionId=»48fc2f56-3f9a-4952-a193-24f9bdada649» logLevel=»Error»/>\n </ActionLogLevels>\n</ActionInOut>\n“»}
ROBIN Executor Python_engine.log 2021-11-03T10:02:43.569+03:00 DEBUG DESKTOP-UBUAANO Robin.Engine 6292 {«message»: «BranchService initialized», «thread»: «Engine»} 2021-11-03T10:02:46.830+03:00 ERROR DESKTOP-UBUAANO Robin.Engine 6292 {«message»: «Can’t execute „Robin.Vision.WaitForObject“ action. Error: OpenCV(4.4.0) C:\Users\ appveyor\AppData\Local\Temp\1\pip-req-build-rwld3ghi\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function „cv::cvtColor’n», «thread»: «Thread- 2»}
ROBIN Executor log[n].log Oct 27 05:25:03 DESKTOP-UBUAANO <DEBUG> {«level»:»Debug»,»datetime»:»2021-10-27T17:25:03. 3781561+03:00»,»pid»:10792,»thread»:12,»message»:»Десериализован ActionInOut: Robin.ActionInOuts.ActionInOut»,»source»:»NetEngine.Engine»,»category»:»Engine»,»identity»: «DESKTOP-UBUAANO\persi»} Nov 03 08:35:08 DESKTOP-UBUAANO <ERROR> {«level»:»Error»,»datetime»:»2021-11-03T08:35:08.0421669+03:00»,»pid»:10564,»thread»:8,»message»:»Exception occurred within executing action: Ошибка установки значения И1=УСПЕХ. Cell is incorrect: [И1]»,»source»:»NetEngine.Engine»,»category»:»Engine»,»identity»:»DESKTOP-UBUAANO\persi»,»exception»: {«message»:»Ошибка установки значения И1=УСПЕХ. Cell is incorrect: [И1]»,»stackTrace»:» в .(Int32 , MethodBase , Object , Object[] )rn в Robin.Excel.CellSetValue.Execute(IDictionary`2 parameters)rn в (Engine , Action )»,»source»:»Robin-Imp.Excel.CellSetValue»,»type»:»System.Exception»}}