Ofline
GrijjyCloudLogger - это инструмент удаленного ведения журнала, который позволяет отправлять сообщения журнала через интрасеть или Интернет с устройств Windows, Linux, iOS, Android и macOS в средство просмотра, работающее в Windows. Помимо отправки сообщений вместе с любыми данными, он имеет множество функций, включая настраиваемые часы в реальном времени, удаленный просмотр объектов в реальном времени, отслеживание использования оперативной памяти, выделение объектов, утечки роста и многое другое.
Здесь, в Grijjy, мы используем этот инструмент ежедневно, чтобы помочь нам диагностировать проблемы, связанные с временем выполнения, с нашими приложениями, работающими на различных платформах. Наш регистратор помогает нам легко проверять состояние выполнения нашего приложения, работающего на устройствах iOS и Android, что может быть затруднительно при использовании отладчика или специальных функций ведения журнала для мобильной платформы. Мы разработали эту утилиту, потому что нам нужен высокопроизводительный удаленный регистратор, работающий на всех платформах и операционных системах, и нам нужны унифицированные возможности, связанные с отладкой во время выполнения, такие как память и отслеживание объектов с этих соответствующих платформ.
Возможность анализировать время выполнения вашего приложения с помощью рабочего стола Windows, на котором уже находится ваша IDE, является мощным инструментом в вашем арсенале как разработчика. Надеемся, вы найдете это полезным.
GrijjyCloudLogger построен на нашей реализации ZeroMQ Majordomo, которая позволяет создавать мощные, легкие, распределенные приложения, которые могут маршрутизировать сообщения по любой сети, включая Интернет. Он очень быстр в сети и может одновременно обрабатывать множество подключенных разработчиков. Он также использует нашу реализацию буферов протокола Google, которая позволяет нам инкапсулировать расширяемые и произвольные данные и передавать данные с использованием эффективных полезных нагрузок.
Начиная
Чтобы использовать GrijjyCloudLogging в своем проекте Delphi, все, что вам нужно сделать, это включить Grijjy.CloudLoggingмодуль в свой список использования. Вы также должны запустить GrijjyLogBroker.exeдля маршрутизации сообщений и GrijjyLogViewer.exeдля просмотра сообщений. Эти двоичные файлы включены в наш репозиторий GitHub .
Для отправки сообщений просто используйте один из множества предоставленных GrijjyLog.Send()методов.
Отправка данных с помощью Grijjy Cloud Logger
Grijjy Cloud Logger предоставляет различные перегруженные Send()методы для удаленной отправки данных по сети в GrijjyLogViewer. Помимо основных типов данных, Grijjy Cloud Logger поддерживает отправку расширенных типов данных, включая TStringsуказатели памяти TBytesи даже TObjects.
Каждый из различных Send()методов имеет общие параметры, а именно AMsgпараметр, который всегда является строкой, отображаемой во фрейме сообщений средства просмотра журнала. Это AValueактуальные данные различных перегруженных типов. Вы также можете отправить необязательный TgoLogLevelпараметр, указывающий серьезность сообщения. Наконец, необязательный параметр, называемый именем службы. Имя службы указывает, кто отправляет сообщение, поэтому брокер журнала может правильно направить сообщение в предполагаемое средство просмотра журнала (подробнее об этом позже).
Общие типы
Большинство основных типов данных поддерживаются путем передачи данных непосредственно в Send()метод.
TStrings
TStringsтакже можно отправить через облачный регистратор, просто построив TStringListи вызвав перегруженный Send()метод.
ТБ
Grijjy Cloud Logger предоставляет несколько методов для отображения блоков памяти. В этом примере мы отправляем TBytesобъект удаленной программе просмотра.
Указатели данных
Второй подход к отправке блоков памяти через облачный регистратор заключается в использовании Send()метода с указателем на ячейку памяти и размером в байтах.
TObject
TObjects можно отправлять вместе со всеми полями и свойствами объекта. Вы можете выбрать, будут ли отображаться только общедоступные и опубликованные поля или все защищенные и частные поля. При желании вы также можете выбрать, сколько уровней подполей отправляется для различных полей и свойств.
GrijjyCloudLogger содержит помощники по методам, которые позволяют более легко просматривать, когда методы вводятся и выходят. EnterMethodрегистрирует начало блока метода. Последующие Send()вызовы Log будут рассматриваться как часть этого метода до тех пор, пока не ExitMethodбудет вызван.
Информация, предупреждения и сообщения об ошибках
Все Send()методы поддерживают необязательный TgoLogLevelпараметр, указывающий серьезность сообщения. Дополнительно есть сообщения специально для отправки TgoLogLevelуведомлений.
SetLogLevel()Вызываемый специальный метод позволяет вам контролировать, какие сообщения отображаются в GrijjyLogViewer на основе текущего уровня журнала. Уровень журнала по умолчанию находится Infoв режиме DEBUG и Warningв режиме RELEASE. С Infoуровнем все сообщения регистрируются. При использовании Warninglevel регистрируются только предупреждения и сообщения об ошибках, а при Errorуровне - только сообщения об ошибках.
Память и отслеживание объектов
Помимо кросс-платформенных возможностей удаленного ведения журнала, GrijjyCloudLogger содержит интегрированные функции, которые помогут вам понять состояние вашего приложения во время выполнения. Первая из этих функций - это память и отслеживание объектов.
Чтобы включить средство отслеживания объектов, вам необходимо добавить Grijjy.CloudLogging.InstanceTrackerмодуль в раздел uses вашего проекта (.dpr) файла, желательно как самый первый модуль:
Добавив этот модуль, ваше приложение будет отслеживать большинство выделенных объектов (с использованием методов, описанных в нашей статье блога о кроссплатформенной перехвате кода ), чтобы оно могло предоставлять эту информацию программе просмотра журналов. Поскольку это добавляет некоторые накладные расходы, эта функция доступна только в сборках DEBUG. В сборках RELEASE модуль InstanceTracker будет работать как пустой модуль.
Каждый раз, когда вы нажимаете «Обновить» в GrijjyLogViewer, он будет предоставлять в реальном времени моментальный снимок выделенных объектов из вашего запущенного приложения и памяти, потребляемой этими объектами. Это очень полезно для определения того, действительно ли определенные действия в вашем приложении времени выполнения выделяют и освобождают объекты, как вы ожидаете. Трекер также отображает дельту между каждым обновлением и максимальными или пиковыми значениями.
Живые часы
Функция Live Watch в GrijjyCloudLogger позволяет создавать пользовательские данные, которые можно отправлять по сети в GrijjyLogViewer во время выполнения.
Чтобы создать часы в реальном времени, вам нужно всего лишь подписаться на a TMessageв своем приложении и добавить свои данные в файл TgoLiveWatchesMessage. GrijjyCloudLogger будет автоматически обрабатывать передачу, маршрутизацию и просмотр данных.
Чтобы начать отправку часов в реальном времени в удаленную программу просмотра журналов, просто подпишитесь на TgoLiveWatchesMessageсообщение.
В вашем TgoLiveWatchesMessageслушателе вы заполняете TgoLiveWatchesMessageодним или несколькими элементами сообщения и данных.
Затем в GrijjyLogViewer вы нажимаете «Обновить», чтобы получить текущее состояние любых часов в реальном времени в удаленном приложении.
Grijjy Log Broker
GrijjyLogBroker направляет сообщения журнала между отправителями и зрителями. По умолчанию брокер настроен на прослушивание tcp://localhost:7337. Когда вы используете Grijjy.CloudLoggingв своем проекте, вам необходимо вызвать GrijjyLog.Connect()метод и указать адрес брокера. Вы также можете указать необязательное имя службы. Если вы намереваетесь использовать брокера в своей организации разработки, каждый разработчик должен использовать уникальное имя службы при подключении к брокеру. Это имя службы предоставляется как GrijjyLog.Connectпри отправке и получении сообщений, так и для GrijjyLogViewer в настройках подключения.
Grijjy Log Viewer
GrijjyLogViewer отображает сообщения, отправленные из вашего приложения. Имя службы в параметрах подключения GrijjyLogViewer должно совпадать с тем же именем службы, которое вы указали для Grijjy.CloudLogger при вызове Connect()метода. Используя этот метод, все разработчики в вашей организации могут использовать один и тот же GrijjyLogBroker.
Установка GrijjyCloudLogger
GrijjyCloudLogger доступен в диспетчере пакетов Embarcadero GetIt в RAD Studio, в противном случае, чтобы установить GrijjyCloudLogger, вам необходимо установить несколько репозиториев и добавить несколько путей поиска библиотеки Delphi.
1. Загрузите следующие репозитории GitHub,
3. Добавьте исходную папку DelphiZeroMQ в путь к вашей библиотеке Delphi для всех платформ.
4. Запустите GrijjyLogBroker.exe и GrijjyLogViewer.exe, находящиеся в /GrijjyCloudLogger/Binпапке.
Мы включили пример, демонстрирующий, как Send()отправлять сообщения GrijjyCloudLogger со всех платформ, поддерживаемых FireMonkey в настоящее время, включая Windows, Android, iOS и macOS. ExampleLogClient.FMX содержится в нашем хранилище GitHub для GrijjyCloudLogger.
Пример консоли для служб Windows и Linux
Для консольных платформ, таких как Linux, и серверных приложений мы также включаем ExampleLogClient.Console в наш репозиторий GitHub для GrijjyCloudLogger.
Использование GrijjyCloudLogger с командами разработчиков
Хотя вполне допустимо запускать GrijjyLogBroker, GrijjyLogViewer и ваше приложение на одном компьютере с Windows в качестве одного разработчика, вы можете рассмотреть возможность совместного использования своей установки со всей командой разработчиков. Есть много причин, по которым это может быть полезно.
Прежде всего, протокол ZeroMQ Majordomo , на котором основан GrijjyCloudLogger, автоматически решает проблемы маршрутизации. Все приложения-отправители, использующие модуль Grijjy.CloudLogging, и все средства просмотра журналов, использующие GrijjyLogViewer, напрямую подключаются к брокеру. Если вы запускаете брокер в своей сети, все просто маршрутизируют один и тот же TCP / IP-адрес и порт, они просто используют разные имена служб. Однако ваш сетевой менеджер может создать сопоставление сетевого порта с GrijjyLogBroker, чтобы вся ваша команда могла использовать одного и того же брокера, независимо от того, были вы локальными в сети или удаленными, и ваши сообщения автоматически перенаправлялись из всех ваших приложений в любую из ваших программ просмотра с помощью отображение сети с одним брандмауэром.
Другой подход - просто установить GrijjyLogBroker на компьютер в Интернете в облаке. Все в локальной сети или те, кто подключается через Интернет, будут маршрутизировать один и тот же TCP / IP-адрес и порт, и никаких изменений брандмауэра не требуется.
ZeroMQ и протокол Majordomo
Как мы упоминали ранее, GrijjyCloudLogger построен с использованием нашей реализации протокола ZeroMQ Majordomo . Он демонстрирует одно из многих возможных решений, которые вы можете создать с помощью мощной распределенной инфраструктуры ZeroMQ.
Еще одна действительно приятная особенность ZeroMQ заключается в том, что он не зависит от протокола. В примере мы подключаемся с помощью tcp://localhost:7337. Однако ZeroMQ поддерживает множество других протоколов, включая ipc: // (межпроцессное взаимодействие), inproc: // (внутрипроцессный) и другие.
ZeroMQ - отличный выбор для многих моделей обмена сообщениями, ориентированных на iOT и производительность. Если вас интересует эта тема, ознакомьтесь с соответствующей статьей о ZeroMQ .
Вывод
Мы надеемся, что вы найдете наш удаленный регистратор полезным в повседневной работе по разработке. Команда Grijjy рассматривает возможность добавления других функций в будущем, включая отображение полных трассировок каждого распределения объектов на большинстве платформ, захват и удаленную регистрацию исключений на различных платформах и многое другое.
Приведенный здесь пример зависит от части нашей библиотеки Grijjy Foundation .
Исходный код и связанный репозиторий примеров размещены на GitHub по адресу https://github.com/grijjy/GrijjyCloudLogger .
Лицензия
GrijjyCloudLogger, Grijjy.CloudLogging, GrijjyLogBroker, GrijjyLogViewer и связанные классы вместе с примерами программ находятся под лицензией Simplified BSD License. Подробнее см. License.txt.
Здесь, в Grijjy, мы используем этот инструмент ежедневно, чтобы помочь нам диагностировать проблемы, связанные с временем выполнения, с нашими приложениями, работающими на различных платформах. Наш регистратор помогает нам легко проверять состояние выполнения нашего приложения, работающего на устройствах iOS и Android, что может быть затруднительно при использовании отладчика или специальных функций ведения журнала для мобильной платформы. Мы разработали эту утилиту, потому что нам нужен высокопроизводительный удаленный регистратор, работающий на всех платформах и операционных системах, и нам нужны унифицированные возможности, связанные с отладкой во время выполнения, такие как память и отслеживание объектов с этих соответствующих платформ.
Возможность анализировать время выполнения вашего приложения с помощью рабочего стола Windows, на котором уже находится ваша IDE, является мощным инструментом в вашем арсенале как разработчика. Надеемся, вы найдете это полезным.
GrijjyCloudLogger построен на нашей реализации ZeroMQ Majordomo, которая позволяет создавать мощные, легкие, распределенные приложения, которые могут маршрутизировать сообщения по любой сети, включая Интернет. Он очень быстр в сети и может одновременно обрабатывать множество подключенных разработчиков. Он также использует нашу реализацию буферов протокола Google, которая позволяет нам инкапсулировать расширяемые и произвольные данные и передавать данные с использованием эффективных полезных нагрузок.
Начиная
Чтобы использовать GrijjyCloudLogging в своем проекте Delphi, все, что вам нужно сделать, это включить Grijjy.CloudLoggingмодуль в свой список использования. Вы также должны запустить GrijjyLogBroker.exeдля маршрутизации сообщений и GrijjyLogViewer.exeдля просмотра сообщений. Эти двоичные файлы включены в наш репозиторий GitHub .
| 1 | uses Grijjy.CloudLogging; |
| 1 | GrijjyLog.Send('String value', 'Foo'); |
Grijjy Cloud Logger предоставляет различные перегруженные Send()методы для удаленной отправки данных по сети в GrijjyLogViewer. Помимо основных типов данных, Grijjy Cloud Logger поддерживает отправку расширенных типов данных, включая TStringsуказатели памяти TBytesи даже TObjects.
Каждый из различных Send()методов имеет общие параметры, а именно AMsgпараметр, который всегда является строкой, отображаемой во фрейме сообщений средства просмотра журнала. Это AValueактуальные данные различных перегруженных типов. Вы также можете отправить необязательный TgoLogLevelпараметр, указывающий серьезность сообщения. Наконец, необязательный параметр, называемый именем службы. Имя службы указывает, кто отправляет сообщение, поэтому брокер журнала может правильно направить сообщение в предполагаемое средство просмотра журнала (подробнее об этом позже).
Общие типы
Большинство основных типов данных поддерживаются путем передачи данных непосредственно в Send()метод.
| 1 2 3 4 | GrijjyLog.Send('String value', 'Foo'); // strings GrijjyLog.Send('Integer value', 42); // integer GrijjyLog.Send('Boolean value', True); // boolean GrijjyLog.Send('Float value', Pi); // extended |
TStringsтакже можно отправить через облачный регистратор, просто построив TStringListи вызвав перегруженный Send()метод.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var S: TStringList; begin S := TStringList.Create; try S.Add('Foo'); S.Add('With Spaces'); S.Add('With, Commas'); S.Add('With "Quotes"'); S.Add('With ''Quotes'''); S.Add('Width , "every", ''thing'''); GrijjyLog.Send('TStrings value', S, TgoLogLevel.Warning); finally S.Free; end; end; |
Grijjy Cloud Logger предоставляет несколько методов для отображения блоков памяти. В этом примере мы отправляем TBytesобъект удаленной программе просмотра.
| 1 2 3 4 5 6 7 | var Bytes: TBytes; begin Bytes := TEncoding.UTF8.GetBytes ('The Quick Brown Fox Jumps Over The Lazy Dog'); GrijjyLog.Send('TBytes value', Bytes, TgoLogLevel.Warning); end; |
Второй подход к отправке блоков памяти через облачный регистратор заключается в использовании Send()метода с указателем на ячейку памяти и размером в байтах.
| 1 2 3 4 5 6 7 8 9 10 | var Bytes: TBytes; I: Integer; begin SetLength(Bytes, 997); for I := 0 to Length(Bytes) - 1 do Bytes := Random(256); Bytes[10] := 0; GrijjyLog.Send('Memory value', @Bytes[0], Length(Bytes), TgoLogLevel.Warning); end; |
TObject
TObjects можно отправлять вместе со всеми полями и свойствами объекта. Вы можете выбрать, будут ли отображаться только общедоступные и опубликованные поля или все защищенные и частные поля. При желании вы также можете выбрать, сколько уровней подполей отправляется для различных полей и свойств.
| 1 | GrijjyLog.Send('Object value', Self, mvPublic, 4, TgoLogLevel.Warning); |
Вложенные методыОбратите внимание , что это потенциально может быть медленным и пропускной способностью интенсивно вызов , поскольку RTTI используется для запроса объекта, и это может привести к большим нагрузкам данных в зависимости от AMinVisibilityи AMaxNestingпараметров.
GrijjyCloudLogger содержит помощники по методам, которые позволяют более легко просматривать, когда методы вводятся и выходят. EnterMethodрегистрирует начало блока метода. Последующие Send()вызовы Log будут рассматриваться как часть этого метода до тех пор, пока не ExitMethodбудет вызван.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | var Foo: TSampleFoo; begin Foo := TSampleFoo.Create; try GrijjyLog.EnterMethod(Self, 'ButtonMethodClick'); GrijjyLog.Send('Inside TFormMain.ButtonMethodClick', TgoLogLevel.Info); Foo.SomeMethod; GrijjyLog.ExitMethod(Self, 'ButtonMethodClick'); finally Foo.Free; end; end; |
Информация, предупреждения и сообщения об ошибках
Все Send()методы поддерживают необязательный TgoLogLevelпараметр, указывающий серьезность сообщения. Дополнительно есть сообщения специально для отправки TgoLogLevelуведомлений.
| 1 2 3 | GrijjyLog.Send('Sample Error Message', TgoLogLevel.Error); GrijjyLog.Send('Sample Info Message', TgoLogLevel.Info); GrijjyLog.Send('Sample Warning Message', TgoLogLevel.Warning); |
Память и отслеживание объектов
Помимо кросс-платформенных возможностей удаленного ведения журнала, GrijjyCloudLogger содержит интегрированные функции, которые помогут вам понять состояние вашего приложения во время выполнения. Первая из этих функций - это память и отслеживание объектов.
Чтобы включить средство отслеживания объектов, вам необходимо добавить Grijjy.CloudLogging.InstanceTrackerмодуль в раздел uses вашего проекта (.dpr) файла, желательно как самый первый модуль:
| 1 2 3 4 5 | program MyProgram; uses Grijjy.CloudLogging.InstanceTracker, ...other units... |
Каждый раз, когда вы нажимаете «Обновить» в GrijjyLogViewer, он будет предоставлять в реальном времени моментальный снимок выделенных объектов из вашего запущенного приложения и памяти, потребляемой этими объектами. Это очень полезно для определения того, действительно ли определенные действия в вашем приложении времени выполнения выделяют и освобождают объекты, как вы ожидаете. Трекер также отображает дельту между каждым обновлением и максимальными или пиковыми значениями.
Живые часы
Функция Live Watch в GrijjyCloudLogger позволяет создавать пользовательские данные, которые можно отправлять по сети в GrijjyLogViewer во время выполнения.
Чтобы создать часы в реальном времени, вам нужно всего лишь подписаться на a TMessageв своем приложении и добавить свои данные в файл TgoLiveWatchesMessage. GrijjyCloudLogger будет автоматически обрабатывать передачу, маршрутизацию и просмотр данных.
Чтобы начать отправку часов в реальном времени в удаленную программу просмотра журналов, просто подпишитесь на TgoLiveWatchesMessageсообщение.
| 1 | TMessageManager.DefaultManager.SubscribeToMessage(TgoLiveWatchesMessage, HandleLiveWatches); |
| 1 2 3 4 5 6 7 8 | procedure TMyClass.HandleLiveWatches(const Sender: TObject; const M: TMessage); var Msg: TgoLiveWatchesMessage absolute M; begin Assert(M is TgoLiveWatchesMessage); Msg.Add('Custom Watch', TrackBar.Value, 1); end; |
Grijjy Log Broker
GrijjyLogBroker направляет сообщения журнала между отправителями и зрителями. По умолчанию брокер настроен на прослушивание tcp://localhost:7337. Когда вы используете Grijjy.CloudLoggingв своем проекте, вам необходимо вызвать GrijjyLog.Connect()метод и указать адрес брокера. Вы также можете указать необязательное имя службы. Если вы намереваетесь использовать брокера в своей организации разработки, каждый разработчик должен использовать уникальное имя службы при подключении к брокеру. Это имя службы предоставляется как GrijjyLog.Connectпри отправке и получении сообщений, так и для GrijjyLogViewer в настройках подключения.
Grijjy Log Viewer
GrijjyLogViewer отображает сообщения, отправленные из вашего приложения. Имя службы в параметрах подключения GrijjyLogViewer должно совпадать с тем же именем службы, которое вы указали для Grijjy.CloudLogger при вызове Connect()метода. Используя этот метод, все разработчики в вашей организации могут использовать один и тот же GrijjyLogBroker.
Установка GrijjyCloudLogger
GrijjyCloudLogger доступен в диспетчере пакетов Embarcadero GetIt в RAD Studio, в противном случае, чтобы установить GrijjyCloudLogger, вам необходимо установить несколько репозиториев и добавить несколько путей поиска библиотеки Delphi.
1. Загрузите следующие репозитории GitHub,
- GrijjyCloudLogger - https://github.com/grijjy/GrijjyCloudLogger
- GrijjyFoundation - https://github.com/grijjy/GrijjyFoundation
- DelphiZeroMQ - https://github.com/grijjy/DelphiZeroMQ
3. Добавьте исходную папку DelphiZeroMQ в путь к вашей библиотеке Delphi для всех платформ.
4. Запустите GrijjyLogBroker.exe и GrijjyLogViewer.exe, находящиеся в /GrijjyCloudLogger/Binпапке.
Пример FiremonkeyЕсли ваше приложение работает в Windows, macOS и Linux, вы должны развернуть библиотеку ZeroMQ для этих платформ с вашим приложением. Эти двоичные файлы библиотеки предварительно созданы и находятся в папке /DelphiZeroMQ/Lib. Для Android и iOS мы используем предварительно созданные статические библиотеки, которые автоматически подключаются к вашему приложению.
Мы включили пример, демонстрирующий, как Send()отправлять сообщения GrijjyCloudLogger со всех платформ, поддерживаемых FireMonkey в настоящее время, включая Windows, Android, iOS и macOS. ExampleLogClient.FMX содержится в нашем хранилище GitHub для GrijjyCloudLogger.
Пример консоли для служб Windows и Linux
Для консольных платформ, таких как Linux, и серверных приложений мы также включаем ExampleLogClient.Console в наш репозиторий GitHub для GrijjyCloudLogger.
Использование GrijjyCloudLogger с командами разработчиков
Хотя вполне допустимо запускать GrijjyLogBroker, GrijjyLogViewer и ваше приложение на одном компьютере с Windows в качестве одного разработчика, вы можете рассмотреть возможность совместного использования своей установки со всей командой разработчиков. Есть много причин, по которым это может быть полезно.
Прежде всего, протокол ZeroMQ Majordomo , на котором основан GrijjyCloudLogger, автоматически решает проблемы маршрутизации. Все приложения-отправители, использующие модуль Grijjy.CloudLogging, и все средства просмотра журналов, использующие GrijjyLogViewer, напрямую подключаются к брокеру. Если вы запускаете брокер в своей сети, все просто маршрутизируют один и тот же TCP / IP-адрес и порт, они просто используют разные имена служб. Однако ваш сетевой менеджер может создать сопоставление сетевого порта с GrijjyLogBroker, чтобы вся ваша команда могла использовать одного и того же брокера, независимо от того, были вы локальными в сети или удаленными, и ваши сообщения автоматически перенаправлялись из всех ваших приложений в любую из ваших программ просмотра с помощью отображение сети с одним брандмауэром.
Другой подход - просто установить GrijjyLogBroker на компьютер в Интернете в облаке. Все в локальной сети или те, кто подключается через Интернет, будут маршрутизировать один и тот же TCP / IP-адрес и порт, и никаких изменений брандмауэра не требуется.
ZeroMQ и протокол Majordomo
Как мы упоминали ранее, GrijjyCloudLogger построен с использованием нашей реализации протокола ZeroMQ Majordomo . Он демонстрирует одно из многих возможных решений, которые вы можете создать с помощью мощной распределенной инфраструктуры ZeroMQ.
Еще одна действительно приятная особенность ZeroMQ заключается в том, что он не зависит от протокола. В примере мы подключаемся с помощью tcp://localhost:7337. Однако ZeroMQ поддерживает множество других протоколов, включая ipc: // (межпроцессное взаимодействие), inproc: // (внутрипроцессный) и другие.
ZeroMQ - отличный выбор для многих моделей обмена сообщениями, ориентированных на iOT и производительность. Если вас интересует эта тема, ознакомьтесь с соответствующей статьей о ZeroMQ .
Вывод
Мы надеемся, что вы найдете наш удаленный регистратор полезным в повседневной работе по разработке. Команда Grijjy рассматривает возможность добавления других функций в будущем, включая отображение полных трассировок каждого распределения объектов на большинстве платформ, захват и удаленную регистрацию исключений на различных платформах и многое другое.
Приведенный здесь пример зависит от части нашей библиотеки Grijjy Foundation .
Исходный код и связанный репозиторий примеров размещены на GitHub по адресу https://github.com/grijjy/GrijjyCloudLogger .
Лицензия
GrijjyCloudLogger, Grijjy.CloudLogging, GrijjyLogBroker, GrijjyLogViewer и связанные классы вместе с примерами программ находятся под лицензией Simplified BSD License. Подробнее см. License.txt.